机器学习之无监督聚类问题
来源:互联网 发布:知乎 矢仓枫子 编辑:程序博客网 时间:2024/06/01 08:24
通过判断彼此间的距离来实现聚类
#无监督:数据没有明确说明属于哪一类,无需去训练模型import pandas as pdvotes = pd.read_csv("D:\\test\machineLearning\\114_congress.csv")print(votes["party"].value_counts())print votes.mean()
R 54D 44I 2Name: party, dtype: int6400001 0.32500004 0.57500005 0.53500006 0.94500007 0.54500008 0.41500009 0.54500010 0.98500020 0.52500026 0.54500032 0.41000038 0.48000039 0.51000044 0.46000047 0.370dtype: float64
from sklearn.metrics.pairwise import euclidean_distances#欧式距离#reshape指定了行的维度,-1代表列的维度由程序自己推断print(euclidean_distances(votes.iloc[0,3:].reshape(1,-1),votes.iloc[1,3:].reshape(1,-1)))distance = euclidean_distances(votes.iloc[0,3:].reshape(1,-1),votes.iloc[2,3:].reshape(1,-1))
[[ 1.73205081]]
import pandas as pdfrom sklearn.cluster import KMeans#KMeans是聚类算法的一种,n_clusters是堆的个数,你需要分成几类,#random_state=1代表随机值是一样的,这样一来聚类的结果也是一样的kmeans_model = KMeans(n_clusters=2,random_state=1)#求出分类后的距离senator_distances = kmeans_model.fit_transform(votes.iloc[:,3:])
#分成2类,0,1代表不同的类,label就是将这些打印出来labels=kmeans_model.labels_#print labels #从这一步分数据可以看出,数据被分成2类,其中D和R区分明显,说明分类有效#crosstab生成一个列表,统计一下不同的label有多少值print(pd.crosstab(labels,votes["party"]))democratic = votes[(labels == 1)&(votes["party"]!="D")]
party D I Rrow_0 0 41 2 01 3 0 54
#以上数据label为1的D有3个,和R走的很近,如何将他们找出来democratic = votes[(labels == 1)&(votes["party"]=="D")]print democratic
name party state 00001 00004 00005 00006 00007 00008 00009 \42 Heitkamp D ND 0.0 1.0 0.0 1.0 0.0 0.0 1.0 56 Manchin D WV 0.0 1.0 0.0 1.0 0.0 0.0 1.0 74 Reid D NV 0.5 0.5 0.5 0.5 0.5 0.5 0.5 00010 00020 00026 00032 00038 00039 00044 00047 42 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 56 1.0 1.0 0.0 0.0 1.0 1.0 0.0 0.0 74 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
import matplotlib.pyplot as plt#用散点图表示,使数据更加清晰plt.scatter(x=senator_distances[:,0],y=senator_distances[:,1],c=labels)plt.show()
#离群点分析,距离最远extremism = (senator_distances ** 3).sum(axis=1)votes["extremism"] = extremismvotes.sort_values("extremism",inplace=True,ascending=False)print votes.head(2)
name party state 00001 00004 00005 00006 00007 00008 00009 \98 Wicker R MS 0.0 1.0 1.0 1.0 1.0 0.0 1.0 53 Lankford R OK 0.0 1.0 1.0 0.0 1.0 0.0 1.0 00010 00020 00026 00032 00038 00039 00044 00047 extremism 98 0.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 46.250476 53 1.0 1.0 1.0 0.0 0.0 1.0 0.0 0.0 46.046873
0 0
- 机器学习之无监督聚类问题
- 机器学习之无监督聚类问题
- 王小草【机器学习】笔记--无监督算法之聚类
- 机器学习笔记之无监督学习
- 机器学习之监督学习和无监督学习
- 机器学习之有监督和无监督
- 机器学习笔记11——无监督学习之k-means聚类算法
- 机器学习--无监督学习之K-means聚类方法
- 《Python机器学习及实践》----无监督学习之数据聚类
- 机器学习笔记:K-Means无监督聚类算法
- 机器学习--无监督学习
- 什么是无监督学习(监督学习,半监督学习,无监督聚类)?
- 机器学习----无监督学习算法之异常检测
- 机器学习之无监督学习与监督学习的区别
- 机器学习之“有监督学习”和“无监督学习”(转载)
- 机器学习相关内容介绍,包括有监督、无监督学习,线性回归分类问题等
- 分类与聚类 监督学习与无监督学习
- 分类与聚类 监督学习与无监督学习
- DecimalFormat用法
- 《合成孔径雷达成像——算法与实现》之【16】仿真图7.5
- sort排序的两种方式
- DecimalFormat的用法 Java小数(float、dobule)格式化
- 用Visual Studio Code Debug世界上最好的语言
- 机器学习之无监督聚类问题
- java.text.NumberFormat用法
- Android之语言切换
- -bash: syntax error near unexpected token `('--------错误
- 物联网之绿色出行
- 旋转数组的最小值 の 三指针解法
- java 数字格式化:小数点、百分比 NumberFormat Decimalformat
- 永久代(PermGen)和元空间的区别(Metaspace)
- java序列化