#使用KNN进行水果分类
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
#读取txt格式数据,并转换为numpy数组
data = np.loadtxt('fruit_data.txt', delimiter='\t')
df = pd.DataFrame(data)
#将特征和标签分开
x = df.iloc[:, 1:5].values #特征
y = df.iloc[:, 0].values #标签
#数据归一化
x = preprocessing.scale(x)
#划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)
#使用KNN算法
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(x_train, y_train)
y_pred = knn.predict(x_test)
#测试准确率
accuracy = accuracy_score(y_test, y_pred)
print('KNN分类器的准确率:', accuracy)
fruitA = np.array([192, 8.4, 7.3, 0.55]) #假设输入一个新的水果特征
fruitA = preprocessing.scale(fruitA.reshape(1, -1))
#预测新水果的类别
predicted_class = knn.predict(fruitA)
print('新水果A的预测类别:', predicted_class[0])
fruitB = np.array([200, 7.3, 10.5, 0.72]) #假设输入一个新的水果特征
fruitB = preprocessing.scale(fruitB.reshape(1, -1))
#预测新水果的类别
predicted_class = knn.predict(fruitB)
print('新水果B的预测类别:', predicted_class[0])