sklearn库kmeans实现实例

本文详细介绍了使用Python的scikit-learn库中的KMeans算法进行数据聚类的过程。通过加载和预处理数据集,调用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)

转载于:https://www.cnblogs.com/eternallql/p/8142990.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值