logistic-regression - StatsModels api 上的交叉验证
问题描述
我得到以下代码来获得逻辑回归的分数。应用 Sklearn 包导致混淆矩阵中只有 FP 和 TN,所以我应用了 statsmodel。
X = df.iloc[:,:-3]
y = df['Direction']
model = sm.Logit(y,X)
result = model.fit()
prediction = result.predict(X)
def confusion_matrix(act,pred):
predtrans = ['Up' if i > 0.5 else "Down" for i in pred]
actuals = ['Up' if i > 0 else "Down" for i in act]
confusion_matrix = pd.crosstab(pd.Series(actuals),
pd.Series(predtrans),
rownames=['Actual'],
colnames=['Predicted'])
return confusion_matrix
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
model = sm.Logit(y_train, X_train)
result = model.fit
df_cm = confusion_matrix(y_test,prediction)
df_cm
混淆矩阵有效,我能够计算出以下分数:
Accuracy = (df_cm.loc['Down'][0]+df_cm.loc['Up'][1])/len(X_test)
Precision = (df_cm.loc['Down'][0])/(((df_cm.loc['Down'][0])+df_cm.loc['Down'][1]))
Recall = (df_cm.loc['Down'][0]/(df_cm.loc['Down'][0]+df_cm.loc['Up'][0]))
F_Measure = (2*Precision*Recall)/(Precision+Recall)
logreg_scores = {"Model": ["LogReg"],
"Accuracy": [Accuracy],
"Precision": [Precision],
"Recall": [Recall],
"F1": [F_Measure]}
df_scores_logreg = pd.DataFrame(logreg_scores)
df_scores_logreg
现在我想应用交叉验证。使用 Sklearn 包会导致结果似乎不正确:
Accuracy_cross_val = cross_val_score(LogisticRegression(), X, y, scoring='accuracy', cv=10)
Precision_cross_val = cross_val_score(LogisticRegression(), X, y, scoring='precision', cv=10)
Recall_cross_val = cross_val_score(LogisticRegression(), X, y, scoring='recall', cv=10)
F1_cross_val = cross_val_score(LogisticRegression(), X, y, scoring='f1', cv=10)
LogReg_cv_scores = {"Model": ["LogReg_CV"],
"Accuracy": [Accuracy_cross_val.mean()],
"Precision": [Precision_cross_val.mean()],
"Recall": [Recall_cross_val.mean()],
"F1": [F1_cross_val.mean()]}
df_scores_LogReg_cv = pd.DataFrame(LogReg_cv_scores)
df_scores_LogReg_cv
如何应用交叉验证?
解决方案
推荐阅读
- python-3.x - 使用 pyvmomi 从关机状态启动虚拟机
- javascript - 以累加器为最终参数的无点归约函数 - 函数式编程 - Javascript - Immutable.js
- android - 为什么只有在方法提取之后才需要 @SuppressLint("WrongCall")
- tfs - VSTS 解决方案构建在经典 ASP.NET 上失败
- c# - 从字符串中提取所有数字
- linker - 将 D 程序与非默认运行时库链接
- mysql - 错误 1064 (42000) 无法授予权限
- laravel-5 - Laravel 查询生成器:“LIKE”的反向?
- boolean-logic - 布尔逻辑或重排
- javascript - 如何在使用辅助类添加和删除类时全部应用转换