数据挖掘分析的一点进步分享
import pandas as pdimport matplotlib.pyplot as plt
import numpy as np
data = pd.read_csv('heros.csv',encoding="gbk")
data.head() 导入数据集 进行分析
https://img-blog.csdnimg.cn/direct/0ee8436bc096476aad12e7f7cd417722.png
df_data=data.copy()
df_data.describe()
https://img-blog.csdnimg.cn/direct/13bab3c94e804759beb6b0062a85177b.png
df_data.info() https://img-blog.csdnimg.cn/direct/ee8f50ac27614b489ab6489ee9a9a94d.png
df_data.drop('英雄',axis=1,inplace=True)
df_data['最大攻速']=df_data['最大攻速'].apply(lambda str: str.replace('%',''))
from sklearn import preprocessing
for feature in ['初始法力','最高物攻']:
le = preprocessing.LabelEncoder()
le.fit(df_data)
df_data = le.transform(df_data)
features = df_data.columns.values.tolist()
import seaborn as sns
sns.heatmap(df_data.corr(),linewidths=0.1, vmax=1.0, square=True,
cmap=sns.color_palette('RdBu', n_colors=256),
linecolor='white', annot=True)
plt.title('the feature of corr')
plt.show() 这里的代码其实还有一点不敷 需要进行优化 这里给同砚们进步的空间进行改成(提示:需要看看前面倒库有没有详细化)
https://img-blog.csdnimg.cn/direct/05693762040943b59611ad621d63ccfc.png
df_data=df_data
df_data.head() https://img-blog.csdnimg.cn/direct/6490dd48ecd24330b6d3c82adf6ea569.png
from sklearn.preprocessing import StandardScaler
stas = StandardScaler()
df_data = stas.fit_transform(df_data)
df_data https://img-blog.csdnimg.cn/direct/4d04bda70a2e40b59bf8a248d10e4b44.png
from sklearn.cluster import KMeans #导入kmeans算法库
n_clusters=3#设置聚类结果的类簇
kmean = KMeans(n_clusters) #设定算法为KMeans算法
df_data_kmeans=df_data.copy()
kmean.fit(df_data_kmeans)#进行聚类算法训练
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
n_clusters=3, n_init=10, n_jobs=None, precompute_distances='auto',
random_state=None, tol=0.0001, verbose=0)
labels = kmean.labels_#输出每一样本的聚类的类簇标签
centers = kmean.cluster_centers_#输出聚类的类簇中心点
print ('各类簇标签值:', labels)
print ('各类簇中心:', centers) https://img-blog.csdnimg.cn/direct/a93aefe7ce7f4be2852c887f52c39edc.png
from scipy.spatial.distance import cdist
import numpy as np
#类簇的数量2到9
clusters = range(2, 10)
#距离函数
distances_sum = []
for k in clusters:
kmeans_model = KMeans(n_clusters = k).fit(df_data_kmeans) #对不同取值k进行训练
#计算各对象离各类簇中心的欧氏距离,生成距离表
distances_point = cdist(df_data_kmeans, kmeans_model.cluster_centers_, 'euclidean')
#提取每个对象到其类簇中心的距离(该距离最短,所以用min函数),并相加。
distances_cluster = sum(np.min(distances_point,axis=1))
#依次存入range(2, 10)的距离结果
distances_sum.append(distances_cluster)
plt.plot(clusters, distances_sum, 'bx-')#画出不同聚类结果下的距离总和
# 设置坐标轴的label
plt.xlabel('k')
plt.ylabel('distances')
plt.show() https://img-blog.csdnimg.cn/direct/053c03f0dbcf4929b71b43f8e7ea11f8.png
from sklearn.cluster import KMeans #导入kmeans算法库
n_clusters=5#设置聚类结果的类簇
kmean = KMeans(n_clusters) #设定算法为KMeans算法
df_data_kmeans=df_data.copy()
kmean.fit(df_data_kmeans)#进行聚类算法训练
labels = kmean.labels_#输出每一样本的聚类的类簇标签
centers = kmean.cluster_centers_#输出聚类的类簇中心点
print ('各类簇标签值:', labels)
print ('各类簇中心:', centers) https://img-blog.csdnimg.cn/direct/42624132778b4deb878f02860fb15276.png
kmeans_result=data.copy()
#将分组结果输出到原始数据集中
kmeans_result.insert(0,'分组',labels)
kmeans_result https://img-blog.csdnimg.cn/direct/3746532a7f4e4d5b9f4886c1e29f91e0.png
"""根据轮廓系数计算模型得分"""
from sklearn.metrics import silhouette_score
score=silhouette_score(df_data_kmeans,labels,metric='euclidean')
score
0.2939377309323035
from sklearn import metrics
y_pred=kmean.predict(df_data_kmeans)
metrics.calinski_harabasz_score(df_data_kmeans,y_pred)
26.680175815073525
from sklearn.cluster import AgglomerativeClustering #导入凝聚型算法库
n_clusters=5#设置聚类结果的类簇
#设定算法为AGNES算法,距离度量为最小距离
ward = AgglomerativeClustering(n_clusters, linkage='ward')
df_data_ward=df_data.copy()
ward.fit(df_data_ward)#进行聚类算法训练 https://img-blog.csdnimg.cn/direct/38ba4b4c956e4bebbb873201b30fa0f7.png
https://img-blog.csdnimg.cn/direct/395b8cd496fb48edb235bf8abfc9f202.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]