wine = pd.read_csv(dataset_url, delimiter = ';')

x_train, x_test, y_train, y_test = train_test_split(wine.quality,wine.alcohol,test_size=0.33, random_state=42)

training_accuracy = []
test_accuracy = []
# try n_neighbors from 1 to 10
neighbors_settings = range(1, 11)

for n_neighbors in neighbors_settings:
    # build the model
    clf = KNeighborsClassifier(n_neighbors=n_neighbors)
    clf.fit(X_train, y_train)
    # record training set accuracy
    training_accuracy.append(clf.score(X_train, y_train))
    # record generalization accuracy
    test_accuracy.append(clf.score(X_test, y_test))

plt.plot(neighbors_settings, training_accuracy, label="training accuracy")
plt.plot(neighbors_settings, test_accuracy, label="test accuracy")

Your independent variables need to be passed to the classifier's fit as a 2D array, but yours is 1D; you can use numpy's reshape: https://stackoverflow.com/questions/30813044/sklearn-found-arrays-with-inconsistent-numbers-of-samples-when-calling-linearre

Separately, I find it odd that you are trying to use quality to predict alcohol content, for which you should be using regression instead of classification. Perhaps you meant to switch the inputs to train_test_split?

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.