sklearn庫kmeans實現實例


# -*- coding: utf-8 -*-
from sklearn.cluster import KMeans
from sklearn.externals import joblib
import numpy
import pandas as pd
def kmeans(inputfile,n):

final = open('data/dataset.csv' , 'r')

data = [line.strip().split(',') for line in final]
feature = [[float(x) for x in row[1]] for row in data]
# print feature
#調用kmeans類
clf = KMeans(n_clusters=n) #給定類別個數為3
s = clf.fit(feature)
# print s
#聚類中心坐標
print '聚類中心',clf.cluster_centers_
#每個樣本所屬的簇
print '每個樣本所屬的簇',clf.labels_ #每個點的分類
#用來評估簇的個數是否合適,距離越小說明簇分的越好,選取臨界點的簇個數
print clf.inertia_ #每個點到其簇的質心的距離之和
#進行預測
df = pd.read_csv('data/dataset1.csv') #未添加類標簽的數據集
label = clf.predict(feature)
labelpre = pd.DataFrame(label,columns=['label'])
df['label'] = labelpre #將聚類之后的類標簽添加到數據集中
# print clf.predict(feature)
print df
#保存模型
joblib.dump(clf , 'data/km.pkl')

#載入保存的模型
clf = joblib.load('data/km.pkl')
print 'clf',clf
'''
#用來評估簇的個數是否合適,距離越小說明簇分的越好,選取臨界點的簇個數
for i in range(5,30,1):
clf = KMeans(n_clusters=i)
s = clf.fit(feature)
print i , clf.inertia_
'''
kmeans('data/danger.csv',3)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM