Python语言实现K-means聚类

import time
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import MiniBatchKMeans, KMeans
from sklearn.metrics.pairwise import pairwise_distances_argmin
from sklearn.datasets.samples_generator import make_blobs
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from pylab import*

import csv
# #############################################################################
# Generate sample data
#0    1  2   3 4 5   功率
#基于权重的聚类
#[(2.1389999999999998, '5'), (0.042099999999999999, '0'), (0.0147, '1'), (0.0016000000000000001, '2'), (0.00029999999999999997, '3'), (0.0, '4')]
weight=[0.00029999999999999997,0.042099999999999999,0.0147,0.0016000000000000001,0.0,2.1389999999999998]
i =0
data=[]
with open(r'D:\全年聚类.csv') as f:
    reader = csv.reader(f)
    for row in reader:
            if i == 0:
                i += 1
                continue
            else:
             data.append(row[:])#提取出每一行中的2:14列
data = np.array(data)
print("the shape of data",np.shape(data))
m,n = np.shape(data)
print("the shape of data",m,n)
set1=data[:,-1]
set1=np.reshape(set1,[-1,1])
clf = KMeans(n_clusters=3)
y_pred=clf.fit_predict(set1)
print(np.shape(set1))
print(y_pred)
print("聚类中心点",clf.cluster_centers_)
set2=[]
for i in range(357):
    set2.append(i)
data2=[]
for i in  y_pred:
      data2.append(i)
print(len(data2))
plt.scatter(set2,set1[:, 0], c=y_pred,linewidths=2,marker='s')#c=y_pred
plt.title("夏季聚类")
plt.show()

猜你喜欢

转载自blog.csdn.net/pwtd_huran/article/details/79730112