python机器学习算法--Kmeans算法

1.k-means介绍

k-平均聚类的目的:把n 个点的训练样本分到k 个聚类中,使得每个点都属于离它最近的均值和聚类中心所对应的聚类,也就是中心点,以之作为聚类的标准。聚类基本上就是依照"物以类聚"的方式,也可以想成,相似的东西有着相似的特征,所以相同种类的数据应该是非常类似。k-means主要是计算同一类的数据,计算出该类的平均中心点位置,k-means与kNN是没有任何关系的两种算法。

python 复制代码
import matplotlib.pyplot as plt 
import numpy as np
x=np.array([[1,1],[1.1,1.1],[1.2,1.2],[2,2],[2.1,2.1],[2.2,2.2]])
y=[1,1,1,0,0,0]
plt.axis([0,3,0,3])
plt.plot(x[:3,0],x[:3,1],'yx')
plt.plot(x[3:0],x[3:1],'g.')
plt.ylabel('H cm')
plt.xlabel('W cm')
plt.legend(('A','B'),loc='upper right')
plt.show()

KMeans函数在使用时有两个地方需要注意:

· 需要在初始的时候告诉系统有几类数据。比如,有两种数据就需要写成KMeans(n_clusters=2)。

· 训练的时候kmeans.fit(X)不需要标签Y。

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
from sklearn import metrics

x = np.array([[1, 1], [1.1, 1.1], [1.2, 1.2], [2, 2], [2.1, 2.1], [2.2, 2.2]])
y = [1, 1, 1, 0, 0, 0]
kmeans = KMeans(n_clusters=2, random_state=0)
kmeans = kmeans.fit(x)

print('集群中心的坐标', kmeans.cluster_centers_)
print('预测', kmeans.predict(x))
print('实际', y)
print('预测[1,1],[2.3,2.1]:', kmeans.predict([[1, 1], [2.3, 2.1]]))

plt.axis([0, 3, 0, 3])
plt.plot(x[:3, 0], x[:3, 1], 'yx')  # 显示第一类的数据点
plt.plot(x[3:, 0], x[3:, 1], 'g.')   # 显示第二类的数据点
plt.plot(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], 'ro')  # 显示集群中心
plt.title('K-Means Clustering')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.xticks(())
plt.yticks(())
plt.show()

一个demo

python 复制代码
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
iris=datasets.load_iris()
iris_x_train,iris_x_test,iris_y_train,iris_y_test=train_test_split(iris.data,iris.target,test_size=0.2)
kmeans=KMeans(n_clusters=3)
kmeans.fit(iris_x_train)
print('实际',iris_y_train)
predicted_labels=kmeans.labels_
print('预测',predicted_labels)
iris_y_train[iris_y_train==1]==2
iris_y_train[iris_y_train==2]==1
iris_y_train[iris_y_train==0]==0
print('调整后的标签',iris_y_train)
score=accuracy_score(iris_y_train,predicted_labels)
print('准确率:{:.2f}'.format(score))
python 复制代码
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt 
iris=datasets.load_iris()
iris_x_train,iris_x_test,iris_y_train,iris_y_test=train_test_split(iris.data,
iris.target,test_size=0.2,random_state=42)
kmeans=KMeans(n_clusters=3)
kmeans.fit(iris_x_train)
y_predict=kmeans.predict(iris_x_train)
iris_y_train[y_predict == 0] = 2
iris_y_train[y_predict == 1] = 1
iris_y_train[y_predict == 2] = 0
print("调整后的标签", iris_y_train)
score=accuracy_score(iris_y_train,y_predict)
print('准确率:{:.2f}'.format(score))
x1=iris_x_train[:,0]
y1=iris_x_train[:,1]
plt.scatter(x1,y1,c=y_predict,cmap='viridis')
centers=kmeans.cluster_centers_
plt.scatter(centers[:,0],centers[:,1],c='black',s=200,alpha=0.5)
plt.show()
相关推荐
千澜空3 分钟前
celery在django项目中实现并发任务和定时任务
python·django·celery·定时任务·异步任务
斯凯利.瑞恩10 分钟前
Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户附数据代码
python·决策树·随机森林
幸运超级加倍~24 分钟前
软件设计师-上午题-16 算法(4-5分)
笔记·算法
yannan2019031332 分钟前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法34 分钟前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR34 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer35 分钟前
快乐数算法
算法·leetcode·职场和发展
小芒果_0136 分钟前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
MarkHD37 分钟前
第十一天 线性代数基础
线性代数·决策树·机器学习
qq_4340859038 分钟前
Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
算法