sklearn: измените ваши данные, используя array.reshape (-1, 1), если ваши данные имеют одну функцию, или array.reshape (1, -1), если он содержит один образец - PullRequest
0 голосов
/ 06 января 2020

Привет, я использую Label Encoder и Onehotencoder в моем примере проекта машинного обучения, но при выполнении кода в той части, где было выполнено Onehotencoder, произошла ошибка, и ошибка была Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample., а в моем столбце функций есть только два атрибута Negative или Positive.

Что означает это сообщение об ошибке и как его исправить

#read data set from excel 
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

dataset = pd.read_csv('diab.csv')
feature=dataset.iloc[:,:-1].values
lablel=dataset.iloc[:,-1].values

#convert string data to binary 
#transform sting data in lablel column to decimal/binary 0 /1
from sklearn.preprocessing import LabelEncoder,OneHotEncoder

lab=LabelEncoder()
lablel=lab.fit_transform(lablel)
onehotencoder=OneHotEncoder()
lablel=onehotencoder.fit_transform(lablel).toarray()



#create trainning model and test it 
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(feature,lablel,test_size=0.30)



#fitting SVM to trainnong set 
from sklearn.svm import SVC
classifier=SVC(kernel='linear',random_state=0)
classifier.fit(x_train,y_train)

y_pred=classifier.predict(x_test)


#making the confusion matrix 
from sklearn.metrics import confusion_matrix
cm=confusion_matrix(y_test, y_pred)

from sklearn.neighbors import KNeighborsClassifier

my_classifier=KNeighborsClassifier()

my_classifier.fit(x_train,y_train)
prediction=my_classifier.predict(x_test)

print(prediction)


from sklearn.metrics import accuracy_score
print (accuracy_score(y_test,prediction))

plot=plt.plot((prediction), 'b', label='GreenDots')
plt.show()

1 Ответ

0 голосов
/ 07 января 2020

Я подозреваю, что проблема в том, что у вас есть 2 возможных ярлыка, и вы рассматриваете их как отдельные значения. Выходные данные SVM обычно представляют собой одно значение, поэтому ваши метки должны быть по одному значению для каждого образца. Вместо отображения меток на один горячий вектор, вместо этого просто используйте одно значение 1, если метка положительная, и значение 0, если метка отрицательная.

...