数据挖掘分析的一点进步分享

打印 上一主题 下一主题

主题 512|帖子 512|积分 1536

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. data = pd.read_csv('heros.csv',encoding="gbk")
  5. data.head()
复制代码
导入数据集  进行分析

  1. df_data=data.copy()
  2. df_data.describe()
复制代码

  1. df_data.info()
复制代码

  1. df_data.drop('英雄',axis=1,inplace=True)
  2. df_data['最大攻速']=df_data['最大攻速'].apply(lambda str: str.replace('%',''))
  3. from sklearn import preprocessing
  4. for feature in ['初始法力','最高物攻']:
  5.     le = preprocessing.LabelEncoder()
  6.     le.fit(df_data[feature])
  7.     df_data[feature] = le.transform(df_data[feature])
  8. features = df_data.columns.values.tolist()
  9. import seaborn as sns
  10. sns.heatmap(df_data[features].corr(),linewidths=0.1, vmax=1.0, square=True,
  11.             cmap=sns.color_palette('RdBu', n_colors=256),
  12.             linecolor='white', annot=True)
  13. plt.title('the feature of corr')
  14. plt.show()
复制代码
这里的代码其实还有一点不敷 需要进行优化  这里给同砚们进步的空间进行改成(提示:需要看看前面倒库有没有详细化)

  1. df_data=df_data[features]
  2. df_data.head()
复制代码

  1. from sklearn.preprocessing import StandardScaler
  2. stas = StandardScaler()
  3. df_data = stas.fit_transform(df_data)
  4. df_data
复制代码

  1. from sklearn.cluster import KMeans #导入kmeans算法库
  2. n_clusters=3  #设置聚类结果的类簇
  3. kmean = KMeans(n_clusters) #设定算法为KMeans算法
  4. df_data_kmeans=df_data.copy()
  5. kmean.fit(df_data_kmeans)  #进行聚类算法训练
  6. KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
  7.        n_clusters=3, n_init=10, n_jobs=None, precompute_distances='auto',
  8.        random_state=None, tol=0.0001, verbose=0)
  9. labels = kmean.labels_  #输出每一样本的聚类的类簇标签
  10. centers = kmean.cluster_centers_  #输出聚类的类簇中心点
  11. print ('各类簇标签值:', labels)
  12. print ('各类簇中心:', centers)
复制代码

  1. from scipy.spatial.distance import cdist
  2. import numpy as np
  3. #类簇的数量2到9
  4. clusters = range(2, 10)
  5. #距离函数
  6. distances_sum = []
  7. for k in clusters:
  8.     kmeans_model = KMeans(n_clusters = k).fit(df_data_kmeans) #对不同取值k进行训练
  9.     #计算各对象离各类簇中心的欧氏距离,生成距离表
  10.     distances_point = cdist(df_data_kmeans, kmeans_model.cluster_centers_, 'euclidean')
  11.     #提取每个对象到其类簇中心的距离(该距离最短,所以用min函数),并相加。
  12.     distances_cluster = sum(np.min(distances_point,axis=1))
  13.     #依次存入range(2, 10)的距离结果
  14.     distances_sum.append(distances_cluster)  
  15. plt.plot(clusters, distances_sum, 'bx-')  #画出不同聚类结果下的距离总和
  16. # 设置坐标轴的label
  17. plt.xlabel('k')  
  18. plt.ylabel('distances')
  19. plt.show()
复制代码

  1. from sklearn.cluster import KMeans #导入kmeans算法库
  2. n_clusters=5  #设置聚类结果的类簇
  3. kmean = KMeans(n_clusters) #设定算法为KMeans算法
  4. df_data_kmeans=df_data.copy()
  5. kmean.fit(df_data_kmeans)  #进行聚类算法训练
  6. labels = kmean.labels_  #输出每一样本的聚类的类簇标签
  7. centers = kmean.cluster_centers_  #输出聚类的类簇中心点
  8. print ('各类簇标签值:', labels)
  9. print ('各类簇中心:', centers)
复制代码

  1. kmeans_result=data.copy()
  2. #将分组结果输出到原始数据集中
  3. kmeans_result.insert(0,'分组',labels)
  4. kmeans_result
复制代码

  1. """根据轮廓系数计算模型得分"""
  2. from sklearn.metrics import silhouette_score
  3. score=silhouette_score(df_data_kmeans,labels,metric='euclidean')
  4. score
  5. 0.2939377309323035
  6. from sklearn import metrics
  7. y_pred=kmean.predict(df_data_kmeans)
  8. metrics.calinski_harabasz_score(df_data_kmeans,y_pred)
  9. 26.680175815073525
  10. from sklearn.cluster import AgglomerativeClustering #导入凝聚型算法库
  11. n_clusters=5  #设置聚类结果的类簇
  12. #设定算法为AGNES算法,距离度量为最小距离
  13. ward = AgglomerativeClustering(n_clusters, linkage='ward')
  14. df_data_ward=df_data.copy()
  15. ward.fit(df_data_ward)  #进行聚类算法训练
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表