【问题标题】:sklearn - knn Value Error: Expected 2d arraysklearn - knn 值错误:预期的二维数组
【发布时间】: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


【解决方案1】:

您的 train_test_split 顺序错误,应该是 X_train, X_test, y_train, y_test = train_test_split()

eidt:即您正在 X_train 上安装缩放器,并且还尝试使用该缩放器转换 y_train。整理一下顺序应该没问题。

【讨论】:

  • 我试过这个 train_test_split,但它并没有改变结果。我仍然收到二维数组错误
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 2019-03-28
  • 2018-07-05
  • 2022-01-22
  • 2021-03-27
  • 1970-01-01
  • 2018-01-15
  • 2020-05-11
相关资源
最近更新 更多