我在摆弄泰坦尼克号的数据集。我尝试使用以下代码将SVM应用于许多单独的功能:
quanti_vars = ['Age','Pclass','Fare','Parch']
imp_med = SimpleImputer(missing_values=np.nan, strategy='median')
imp_med.fit(titanic[['Age']])
for i in (X_train, X_test):
i[['Age']] = imp_med.transform(i[['Age']])
svm_clf = SVC()
svm_clf.fit(X_train[quanti_vars], y_train)
y_pred = svm_clf.predict(X_test[quanti_vars])
svm_accuracy = accuracy_score(y_pred, y_test)
svm_accuracy
for i in quanti_vars:
svm_clf.fit(X_train[i], y_train)
y_pred = svm_clf.predict(X_test[i])
svm_accuracy = accuracy_score(y_pred, y_test)
print(i,': ',svm_accuracy)
最后的for
循环抛出了一个ValueError: Expected 2D array, got 1D array instead
错误,我不知道为什么——SVM不能对单个特征进行操作吗
我意识到,非常简单,我需要将
i
放在两个括号中以正确地表示子集。因此:产生
(我不会假装它很好,但至少它起作用了。)
那很容易 只需写下以下内容:
添加[]将其转换为二维数组 而且最好是把票价带到10级,而不是直接使用 bcs 30美元和50美元之间有巨大的差异,但随着价格的上涨,差异会逐渐消失 例如,300美元和500美元之间没有太大差别
相关问题 更多 >
编程相关推荐