【问题标题】:Cross Validation LOO Model not running, no errors reported交叉验证 LOO 模型未运行,未报告错误
【发布时间】:2019-12-19 10:07:15
【问题描述】:

当我运行这个交叉验证时,忽略一个,它什么都不做,甚至没有错误消息。我无法弄清楚我错过了什么。我正在使用来自 kaggle 的 csv - https://www.kaggle.com/dileep070/heart-disease-prediction-using-logistic-regression/downloads/heart-disease-prediction-using-logistic-regression.zip/1

import csv 
from sklearn.model_selection import LeaveOneOut
from sklearn import svm
from sklearn.impute import SimpleImputer
import numpy as np
import pandas as pd 
from pandas import read_csv
from sklearn.model_selection import cross_val_score, 
cross_val_predict
from sklearn import metrics
from matplotlib import pyplot as plt 
from sklearn.model_selection import train_test_split

#replace missing values with mean
dataset=read_csv("//Users/crystalfortress/Desktop/CompGenetics
/Final_Project_Comp/framingham.csv")
dataset.fillna(dataset.mean(), inplace=True)
print(dataset.isnull().sum())

X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 15].values

model = svm.SVC(kernel='linear', C=10, gamma = 0.1)
loo = LeaveOneOut()
scores = cross_val_score(model, X, y, cv=loo, scoring='accuracy')

print('Accuracy after cross validation:', scores.mean())
predictions = cross_val_predict(model, X, y, cv=loo)
accuracy = metrics.r2_score(y, predictions)
print('Prediction accuracy:', accuracy)
x = metrics.classification_report(y, predictions)
print(x)
cf = metrics.confusion_matrix(y, predictions)
print(cf)

【问题讨论】:

  • 您的 python 解释器是否停止或完成并没有返回任何内容?

标签: python machine-learning scikit-learn cross-validation


【解决方案1】:

我尝试在我的机器上运行它,看起来你的代码运行良好(尽管我确实注释掉了很多不必要的导入)。 Leave One Out 将需要很长时间来训练模型(它使 n 训练数据集来自 n 数据点 link)。因此,您必须等待它进行训练,然后才能获得结果。将cv= 更改为一个数字(我相信默认为 3)将更快地训练模型,并且很可能模型中的方差更小。此外,将n_jobs=-1 添加到您的cross_val_score 调用将允许python 访问您的所有处理器。例如:scores = cross_val_score(model, X, y, cv=loo, scoring='accuracy', n_jobs=-1)

您也可以在cross_val_score 中设置verbose 参数以查看进度(不过,请注意,它并不快)。我相信最高值是 3(在他们的在线文档中没有提到),但是使用更高的值就可以了。所以最终的 cross_val_score 调用看起来像:

scores = cross_val_score(model, X, y, cv=loo, scoring='accuracy', n_jobs=-1, verbose=10)

【讨论】:

    猜你喜欢
    • 2019-10-23
    • 2020-05-16
    • 2023-03-15
    • 1970-01-01
    • 2013-05-19
    • 2017-11-16
    • 2020-12-26
    • 2021-06-13
    • 2014-02-18
    相关资源
    最近更新 更多