タイタニックの場合、Kaggle から学習タスクを実行しています。
データを手動で分離するか、cross_val_score を使用して線形回帰を実行すると、予測精度が異なります。ロジスティック回帰も同様です。
例。
- 線形回帰。
マニュアル
Algorithm = LinearRegression()
kf = KFold(dataset.shape[0], n_folds=3, random_state=1)
predictions = []
for train, test in kf:
train_predictors = (dataset[Predictors].iloc[train])
train_target = dataset['Survived'].iloc[train]
Algorithm.fit(train_predictors, train_target)
test_predictions = Algorithm.predict(dataset[Predictors].iloc[test])
predictions.append(test_predictions)
predictions = np.concatenate(predictions, axis=0)
print(predictions.shape[0])
realed = list(dataset.Survived)
predictions[predictions > 0.5] = 1
predictions[predictions <= 0.5] = 0
accuracy2 = sum(predictions[predictions == dataset["Survived"]]) / len(predictions)
print("Tochnost prognoza: ", accuracy2 * 100, " %")
結果 - 78,34%
Cross_val_score
scores=cross_val_score(LinearRegression(), dataset[Predictors], dataset["Survived"], cv=3)
print(scores.mean())
結果 - 37,5%
- ロジスティック回帰。
ここでは、手動で 26,15%、cross_val_score 関数で 78,78% を使用しています。
どうして??