实验2

1.第一个实验

主程序:

from sklearn import neighbors
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import random

# 导入数据
iris = datasets.load_iris()

# 打乱数据
data_size = iris.data.shape[0]
index = [i for i in range(data_size)]
random.shuffle(index)

iris.data = iris.data[index]
iris.target = iris.target[index]

# 切分数据集
test_size = 40
x_train = iris.data[test_size:]
x_test = iris.data[:test_size]
y_train = iris.target[test_size:]
y_test = iris.target[:test_size]
ks=[1,4,16,32,64]
for k in ks:
    # 模型运算
    model = neighbors.KNeighborsClassifier(n_neighbors=k)
    model.fit(x_train, y_train)
    prediction = model.predict(x_test)

    # 输出分类报告
    print(f"K值:{k}")
    print(classification_report(y_test, prediction))
    print("-----------------------------")

2.第二个实验

  1. 执行的主程序代码
# 载入模块
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt

# 导入数据
data = np.genfromtxt("kmeans.dat", delimiter=" ")

# 定义一个 ks 列表
ks = [1, 3, 4]

# 创建子图
fig, axes = plt.subplots(1, len(ks), figsize=(15, 5))

for idx, k in enumerate(ks):
    # 训练模型
    model = KMeans(n_clusters=k)
    model.fit(data)

    # 查看结果
    centers = model.cluster_centers_
    print(f"K={k} centers:\n", centers)
    result = model.predict(data)

    # 获取标签
    labels = model.labels_

    # 画图
    mark = ['or', 'ob', 'og', 'oy']
    for i, d in enumerate(data):
        axes[idx].plot(d[0], d[1], mark[result[i] % len(mark)])  # 确保索引不超出

    mark = ['*r', '*b', '*g', '*y']
    for i, center in enumerate(centers):
        axes[idx].plot(center[0], center[1], mark[i], markersize=20)

    # 添加标题
    axes[idx].set_title(f"K-Means Clustering (K={k})")
    axes[idx].set_xlabel("Feature 1")
    axes[idx].set_ylabel("Feature 2")
    axes[idx].grid(True)

# 调整布局
plt.tight_layout()
plt.show()

  1. 生成一个随机数据集

    import numpy as np
    
    # 生成一些随机数据
    data = np.random.rand(40, 2)  # 生成40个二维数据点
    
    # 保存数据到 kmeans.dat 文件
    np.savetxt('kmeans.dat', data, delimiter=' ')
    
posted @ 2024-10-28 23:51  奋斗的独角兽  阅读(35)  评论(0)    收藏  举报