【发布时间】:2020-10-13 10:22:44
【问题描述】:
我目前正在学习 knn 并尝试做一些预测,
但它最终出现以下错误:“预期的二维数组,而不是一维数组”。
虽然我查了一些线程,但我不知道如何重塑数组。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
from sklearn import metrics
data = pd.read_csv('justAnUrl')
X = data.iloc[:,:-1]
y = data.iloc[:,13].values
X_train, y_train, X_test, y_test = train_test_split(X, y,test_size=0.25, random_state=100)
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
# a)
knn = KNeighborsClassifier(n_neighbors=5)
knn_list = []
for x in range(25):
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
matches = 0
if y_pred[x] == y_test[x]:
matches = matches + 1
precision = matches / len(y_pred)
knn_list.append(precision)
print(knn_list)
table's header
这些数据是关于心脏病的。
希望你能帮助我,其他人也可以从这个例子中学习。
【问题讨论】:
-
stackoverflow.com/questions/59508553/… 看看对你有没有帮助
-
@DouglasFerreira 如果我这样做,我只是被告知,X 只有 1 个功能,但 StandardScaler 预计有 13 个。
-
在
data.iloc[:,:-1]末尾添加values有什么改变吗? -
那么也许你想要 .reshape(1,-1) 而不是 .reshape(-1,1)
-
如果我添加值它不会改变什么。如果我交换重塑值,它说 X 有 227 个特征,但 StandardScaler 期望有 13 个特征作为输入
标签: python pandas numpy scikit-learn