TXT文件中五列数据分别对应花萼长度、花萼宽度、花瓣长度、花瓣宽度和种类,其中种类分别为山鸢尾、变色鸢尾和维吉尼亚鸢尾三个类别。 6.1 完成基础题目 (85分) 读取iris数据集中的花萼长度数据(已保存为txt格式),使用Numpy并对其进行排序、去重,并求出和、累积和、均值、标准差、方差、最小值、最大值 6.2 使用KNN 算法进行花的分类 (15分)每一类花朵前面80%数据作为训练,后面20%数据作为预测,计算出预测准确率
时间: 2023-12-25 16:04:07 浏览: 138
首先,我会读取iris数据集中的花萼长度数据,并使用NumPy对其进行排序、去重,并计算出和、累积和、均值、标准差、方差、最小值和最大值。然后,我会使用KNN算法对花的种类进行分类,将每一类花朵的前80%数据作为训练集,后20%数据作为测试集,最后计算出预测的准确率。
以下是代码实现:
```python
import numpy as np
# 读取花萼长度数据
data = np.loadtxt('iris.txt', delimiter=',', usecols=0)
# 对数据进行排序和去重
sorted_data = np.sort(np.unique(data))
# 计算和、累积和、均值、标准差、方差、最小值和最大值
total_sum = np.sum(sorted_data)
cumulative_sum = np.cumsum(sorted_data)
mean_value = np.mean(sorted_data)
std_deviation = np.std(sorted_data)
variance = np.var(sorted_data)
min_value = np.min(sorted_data)
max_value = np.max(sorted_data)
print("和:", total_sum)
print("累积和:", cumulative_sum)
print("均值:", mean_value)
print("标准差:", std_deviation)
print("方差:", variance)
print("最小值:", min_value)
print("最大值:", max_value)
# 使用KNN算法进行花的分类
# 将数据分为三类:山鸢尾、变色鸢尾和维吉尼亚鸢尾
labels = np.loadtxt('iris.txt', delimiter=',', usecols=4, dtype=str)
# 将数据分为训练集和测试集
train_data = sorted_data[:int(len(sorted_data)*0.8)]
test_data = sorted_data[int(len(sorted_data)*0.8):]
# 根据训练集计算每个类别的均值和标准差
class_means = []
class_std = []
for label in np.unique(labels):
class_data = train_data[labels[:len(train_data)] == label]
class_means.append(np.mean(class_data))
class_std.append(np.std(class_data))
# 对测试集中的每个样本进行分类预测
predictions = []
for sample in test_data:
distances = np.abs(class_means - sample) / class_std
predicted_label = np.argmin(distances)
predictions.append(predicted_label)
# 计算预测准确率
true_labels = labels[len(train_data):]
accuracy = np.mean(predictions == true_labels) * 100
print("预测准确率:", accuracy)
```
请确保你已经将花萼长度数据保存为名为`iris.txt`的文件,并且确保数据集的格式正确。运行上述代码,即可得到花萼长度数据的排序、去重结果,以及预测的准确率。
阅读全文