【发布时间】:2022-01-07 07:27:51
【问题描述】:
我对机器学习很陌生。
我有一个数据集,我想对其应用测试训练拆分和交叉验证以进行线性回归。
我尝试使用 train_test_split(X, y, test_size=0.3) 拆分数据集,我都执行了
reg = LinearRegression().fit(X_train,y_train)
reg.score(X_test,y_test)
clf = svm.SVC(kernel = 'linear').fit(X_train,y_train)
clf.score(X_test,y_test)
reg.score 的输出为 0.98,但 clf.score 的输出非常低,接近 0。为什么这些结果不同?
我也尝试过
clf = svm.SVC(kernel='linear', C=1, random_state=42)
scores = cross_val_score(clf, X, y, cv=2)
它也给出了非常小的数字,并看到了这个警告
UserWarning: The least populated class in y has only 1 members, which is less than n_splits=2.
% (min_groups, self.n_splits)), UserWarning)
我尝试了不同的 cv,但 cv>5 给出错误“n_splits=5 不能大于每个类中的成员数。”请注意,我使用的数据集不是二进制或简单的多类。它更像是月度销售数据,而不是分类数据。我认为这可能就是导致警告的原因。这种情况我该怎么办?
【问题讨论】:
标签: python scikit-learn linear-regression cross-validation