import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score # 导入数据集 data = pd.read_csv("1.csv") # 分割特征和标签 X = data.iloc[:, :-1] y = data.iloc[:, -1] # 将数据集分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建KNN分类器 knn = KNeighborsClassifier(n_neighbors=3) # 训练模型 knn.fit(X_train, y_train) # 预测测试集 y_pred = knn.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) # 假设有一个新的样本 [5.1, 3.5, 1.4] new_sample = [[1, 27, 19]] # 使用训练好的KNN分类器进行预测 pred = knn.predict(new_sample) # 输出预测结果 print("预测结果:", pred)写一个和这个类似的代码
时间: 2024-03-27 18:37:49 浏览: 67
好的,这里是一个类似的代码,使用Iris数据集进行KNN分类器的训练和预测。与您提供的代码不同的是,这个代码使用了Iris数据集的原始数据而不是从CSV文件中读取数据,并且使用了交叉验证来评估分类器的性能。
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.neighbors import KNeighborsClassifier
# 加载Iris数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建KNN分类器
knn = KNeighborsClassifier(n_neighbors=3)
# 使用交叉验证评估分类器性能
scores = cross_val_score(knn, X_train, y_train, cv=5)
# 训练模型
knn.fit(X_train, y_train)
# 预测测试集
y_pred = knn.predict(X_test)
# 计算准确率
accuracy = knn.score(X_test, y_test)
print("Accuracy:", accuracy)
# 假设有一个新的样本 [5.1, 3.5, 1.4, 0.2]
new_sample = [[5.1, 3.5, 1.4, 0.2]]
# 使用训练好的KNN分类器进行预测
pred = knn.predict(new_sample)
# 输出预测结果
print("预测结果:", iris.target_names[pred])
```
该代码会输出KNN分类器在测试集上的准确率,并且会基于训练好的分类器对一个新的样本进行预测,并输出预测结果。
阅读全文