python 编程练习——用 KMeans 聚类算法预测陶器年代

Python YX ⋅ 于 2020-05-13 19:14:27 ⋅ 最后回复由 RickyChen 2020-05-17 13:11:06 ⋅ 247 阅读
用KMeans聚类算法预测陶器年代

file

参考文献

中学数学建模与赛题集锦
file

成为第一个点赞的人吧 :bowtie:
回复数量: 2
  • RickyChen GKFCCCCCCCCCCCCCCCCCCCCCC
    2020-05-17 13:10:38

    file

  • RickyChen GKFCCCCCCCCCCCCCCCCCCCCCC
    2020-05-17 13:11:06
    from sklearn.cluster import KMeans
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    fig = plt.figure()
    ax = Axes3D(fig)
    data = pd.DataFrame(pd.read_excel('chinese.xlsx'))
    # ax.scatter(data['全白'], data['波纹'], data['直线'], c='r')
    time = np.array(data[['全白', '波纹', '直线']])
    clf = KMeans(n_clusters=3)
    clf = clf.fit(time)
    clf.cluster_centers_
    data['label'] = clf.labels_
    data0 = data.loc[data['label'] == 0]
    data1 = data.loc[data['label'] == 1]
    data2 = data.loc[data['label'] == 2]
    ax.scatter(data0['全白'], data0['波纹'], data0['直线'], c='r')
    ax.scatter(data1['全白'], data1['波纹'], data1['直线'], c='b')
    ax.scatter(data2['全白'], data2['波纹'], data2['直线'], c='g')
    ax.legend()
    ax.set_xlim(0, 100)
    ax.set_ylim(0, 100)
    ax.set_zlim(0, 100)
    ax.set_xlabel('White')
    ax.set_ylabel('Wave')
    ax.set_zlabel('Line')
    plt.legend()
    plt.show()
    
    time = np.array(data0[['全白', '波纹', '直线']])
    clf = KMeans(n_clusters=3)
    clf = clf.fit(time)
    clf.cluster_centers_
    data0['label'] = clf.labels_
    print(data0)
    
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter