张家明做网站,xyz域名做网站好么,搭建自己的网站需要什么,主机屋空间安装织梦后台程序后怎么弄成淘宝客网站文章目录 前言一、数据集介绍二、使用步骤1.导包1.2加载数据集1.3绘制二维数据分布图1.4实例化K-means类#xff0c;并且定义训练函数1.5训练1.6可视化展示2.聚类算法2.1.可视化生成3其他聚类算法进行鸢尾花分类 前言
例如#xff1a;随着人工智能的不断发展#xff0c;机器… 文章目录 前言一、数据集介绍二、使用步骤1.导包1.2加载数据集1.3绘制二维数据分布图1.4实例化K-means类并且定义训练函数1.5训练1.6可视化展示2.聚类算法2.1.可视化生成3其他聚类算法进行鸢尾花分类 前言
例如随着人工智能的不断发展机器学习这门技术也越来越重要很多人都开启了学习机器学习本文就介绍了机器学习的基础内容。 一、数据集介绍
鸢尾花数据集鸢尾花开源数据集共包含150条记录
二、使用步骤
1.导包
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
from sklearn import datasets 1.2加载数据集
# 直接从sklearn中获取数据集
iris datasets.load_iris()
X iris.data[:, :4] # 表示我们取特征空间中的4个维度
print(X.shape)1.3绘制二维数据分布图
# 取前两个维度萼片长度、萼片宽度绘制数据分布图
plt.scatter(X[:, 0], X[:, 1], cred, markero, labelsee)
plt.xlabel(sepal length)
plt.ylabel(sepal width)
plt.legend(loc2)
plt.show()
# 取后两个维度花瓣长度、花瓣宽度绘制数据分布图
plt.scatter(X[:, 2], X[:, 3], cgreen, marker, labelsee)
plt.xlabel(petal length)
plt.ylabel(petal width)
plt.legend(loc2)
plt.show() 1.4实例化K-means类并且定义训练函数
def Model(n_clusters):estimator KMeans(n_clustersn_clusters)# 构造聚类器return estimatordef train(estimator):estimator.fit(X) # 聚类1.5训练
# 初始化实例并开启训练拟合
estimatorModel(4)
train(estimator) 1.6可视化展示
label_pred estimator.labels_ # 获取聚类标签
# 绘制k-means结果
x0 X[label_pred 0]
x1 X[label_pred 1]
x2 X[label_pred 2]
plt.scatter(x0[:, 0], x0[:, 1], cred, markero, labellabel0)
plt.scatter(x1[:, 0], x1[:, 1], cgreen, marker*, labellabel1)
plt.scatter(x2[:, 0], x2[:, 1], cblue, marker, labellabel2)
plt.xlabel(sepal length)
plt.ylabel(sepal width)
plt.legend(loc2)
plt.show() # 绘制k-means结果
x0 X[label_pred 0]
x1 X[label_pred 1]
x2 X[label_pred 2]
plt.scatter(x0[:, 2], x0[:, 3], cred, markero, labellabel0)
plt.scatter(x1[:, 2], x1[:, 3], cgreen, marker*, labellabel1)
plt.scatter(x2[:, 2], x2[:, 3], cblue, marker, labellabel2)
plt.xlabel(petal length)
plt.ylabel(petal width)
plt.legend(loc2)
plt.show() # 绘制k-means结果分成4类效果并不比3类好。
x0 X[label_pred 0]
x1 X[label_pred 1]
x2 X[label_pred 2]
x3 X[label_pred 3]
plt.scatter(x0[:, 2], x0[:, 3], cred, markero, labellabel0)
plt.scatter(x1[:, 2], x1[:, 3], cgreen, marker*, labellabel1)
plt.scatter(x2[:, 2], x2[:, 3], cblue, marker, labellabel2)
plt.scatter(x2[:, 2], x2[:, 3], cyellow, markerX, labellabel3)
plt.xlabel(petal length)
plt.ylabel(petal width)
plt.legend(loc2)
plt.show() 2.聚类算法
代码如下示例
#1. 函数distEclud()的作用用于计算两个向量的距离def distEclud(x,y):return np.sqrt(np.sum((x-y)**2)) #2. 函数randCent()的作用: 用来为给定的数据集构建一个包含k个随机质心的集合
def randCent(dataSet,k):# 3.m,n分别被赋值为# m 150 ,n 4m,n dataSet.shape centroids np.zeros((k,n))#4.补充range()中的参数for i in range(k): index int(np.random.uniform(0,m)) # 产生0到150的随机数在数据集中随机挑一个向量做为质心的初值centroids[i,:] dataSet[index,:] #把对应行的四个维度传给质心的集合# print(centroids) return centroids# k均值聚类算法
def KMeans(dataSet,k): m np.shape(dataSet)[0] #行数150# 第一列存每个样本属于哪一簇(四个簇)# 第二列存每个样本的到簇的中心点的误差# print(m)clusterAssment np.mat(np.zeros((m,2)))# .mat()创建150*2的矩阵clusterChange True# 5.centroids randCent(dataSet,k)的作用初始化质心centroidscentroids randCent(dataSet,k)# 6.补充while循环的条件。while clusterChange:clusterChange False# 遍历所有的样本# 7.补充range()中的参数。for i in range(m):minDist 100000.0minIndex -1# 遍历所有的质心#8.补充range()中的参数for j in range(k):# 计算该样本到3个质心的欧式距离找到距离最近的那个质心minIndexdistance distEclud(centroids[j,:],dataSet[i,:])if distance minDist:#9.补充minDistminIndex的赋值代码minDist distance#分类的索引minIndex j# 更新该行样本所属的簇if clusterAssment[i,0] ! minIndex:clusterChange TrueclusterAssment[i,:] minIndex,minDist**2#更新质心for j in range(k):pointsInCluster dataSet[np.nonzero(clusterAssment[:,0].A j)[0]] # 获取对应簇类所有的点x*4#10.补充axis后的赋值centroids[j,:] np.mean(pointsInCluster,axis0) # 求均值产生新的质心# print(clusterAssment[0:150,:])print(cluster complete)return centroids,clusterAssmentdef draw(data,center,assment):lengthlen(center)figplt.figuredata1data[np.nonzero(assment[:,0].A 0)[0]]data2data[np.nonzero(assment[:,0].A 1)[0]]data3data[np.nonzero(assment[:,0].A 2)[0]]# 选取前两个维度绘制原始数据的散点图plt.scatter(data1[:,0],data1[:,1],cred,markero,labellabel0)plt.scatter(data2[:,0],data2[:,1],cgreen, marker*, labellabel1)plt.scatter(data3[:,0],data3[:,1],cblue, marker, labellabel2)# 绘制簇的质心点for i in range(length):plt.annotate(center,xy(center[i,0],center[i,1]),xytext\(center[i,0]1,center[i,1]1),arrowpropsdict(facecoloryellow))# plt.annotate(center,xy(center[i,0],center[i,1]),xytext\# (center[i,0]1,center[i,1]1),arrowpropsdict(facecolorred))plt.show()# 选取后两个维度绘制原始数据的散点图plt.scatter(data1[:,2],data1[:,3],cred,markero,labellabel0)plt.scatter(data2[:,2],data2[:,3],cgreen, marker*, labellabel1)plt.scatter(data3[:,2],data3[:,3],cblue, marker, labellabel2)# 绘制簇的质心点for i in range(length):plt.annotate(center,xy(center[i,2],center[i,3]),xytext\(center[i,2]1,center[i,3]1),arrowpropsdict(facecoloryellow))plt.show()2.1.可视化生成
代码如下示例
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
iris datasets.load_iris()
dataSet iris.data[:, :4]
k 3
centroids,clusterAssment KMeans(dataSet,k)
draw(dataSet,centroids,clusterAssment)3其他聚类算法进行鸢尾花分类
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
from sklearn import datasets # 直接从sklearn中获取数据集
iris datasets.load_iris()
X iris.data[:, :4] # 表示我们取特征空间中的4个维度
print(X.shape)from sklearn.cluster import DBSCAN
# 导入数据集
iris datasets.load_iris()
X iris.data[:, :4] # 取前四个特征
# 使用DBSCAN聚类算法
dbscan DBSCAN(eps0.5, min_samples5)
labels dbscan.fit_predict(X)
# 绘制分类结果
plt.scatter(X[:, 0], X[:, 1], clabels)
plt.xlabel(Sepal Length)
plt.ylabel(Sepal Width)
plt.title(DBSCAN Clustering)
plt.show()from sklearn.cluster import AgglomerativeClustering
# 使用层次聚类算法
hierarchical AgglomerativeClustering(n_clusters3)
labels hierarchical.fit_predict(X)
# 绘制分类结果
plt.scatter(X[:, 0], X[:, 1], clabels, marker)
plt.xlabel(Sepal Length)
plt.ylabel(Sepal Width)
plt.title(Hierarchical Clustering)
plt.show()