赞
踩
用PCA降维,后输出降维后每一列的贡献率,各列贡献相加为1.
// An highlighted block
if __name__ == "__main__":
iris = datasets.load_iris() # 获取鸢尾花数据集Dick
X=iris["data"]#训练数据
Y=iris["target"]#类别
pca = PCA(n_components=2) # 降到2维
pca.fit(X) # 训练
x = pca.fit_transform(X) # 降维后的数据
print(pca.explained_variance_ratio_) # 输出贡献率
基于鸢尾花数据画图,用PCA降维到两维后
plt.figure(figsize=(10, 5)) # x1_min, x1_max = x[:, 0].min(), x[:, 0].max() # 第0列的范围 # x2_min, x2_max = x[:, 1].min(), x[:, 1].max() # 第1列的范围 # plt.xlim(x1_min, x1_max) # plt.ylim(x2_min, x2_max) for i in range(len(Y)): if Y[i]==0: plt.plot(x[i, 0], x[i, 1], 'ro') elif Y[i]==1: plt.plot(x[i, 0], x[i, 1], 'bo') else: plt.plot(x[i, 0], x[i, 1], 'yo') #gca="get current axis" 设置坐标轴原点 ax = plt.gca() ax.xaxis.set_ticks_position("bottom")#把四条外边框的下边当做x轴 ax.yaxis.set_ticks_position("left")#把四条外边框的左边当做y轴 ax.spines["bottom"].set_position(("data", 0))#把x轴的位置放到y的0位置 ax.spines["left"].set_position(("data", 0))#把y轴的位置放到x的0位置 plt.grid(True) plt.xlabel('1st') plt.ylabel('2nd') plt.title('Scatter Plot') plt.show()
效果图如下:
对上图进行归一化处理,通过遍历每列feature vector里的每一个数据,将Max和Min的记录下来,并通过Max-Min作为基数(即Min=0,Max=1)进行数据的归一化处理,将每个特征值规约到(0,1)之间。
#导入包:from sklearn.preprocessing import MinMaxScaler
#归一化(normalization)
minMax = MinMaxScaler()
x_std = minMax.fit_transform(x)
效果图如下:
标准化处理:对原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,这个方法被广泛的使用在许多机器学习算法中(例如:支持向量机、逻辑回归和类神经网络)。公式如下:
#导入包:from sklearn.preprocessing import StandardScaler
#标准化(Standardization)
scaler = StandardScaler().fit(x)
x_std = scaler .transform(x)#标准化后的数据
print(scaler.mean_)#输出均值
print(scaler.scale_)#输出标准差
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。