西安建设科技专修学院官方网站,贵阳企业网站设计与建设,太原cms模板建站,电子商务网站规划、电子商务网站建设sklearn LDA降维算法LDA(Linear Discriminant Analysis)线性判断别分析#xff0c;可以用于降维和分类。其基本思想是类内散度尽可能小#xff0c;类间散度尽可能大#xff0c;是一种经典的监督式降维/分类技术。sklearn代码实现#codingutf-8import pandas as pdimport matp…sklearn LDA降维算法LDA(Linear Discriminant Analysis)线性判断别分析可以用于降维和分类。其基本思想是类内散度尽可能小类间散度尽可能大是一种经典的监督式降维/分类技术。sklearn代码实现#codingutf-8import pandas as pdimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn import datasetsfrom sklearn.discriminant_analysis import LinearDiscriminantAnalysisimport numpy as npdef main():iris datasets.load_iris() #典型分类数据模型#这里我们数据统一用pandas处理data pd.DataFrame(iris.data, columnsiris.feature_names)data[class] iris.target#这里只取两类# data data[data[class]!2]#为了可视化方便这里取两个属性为例X data[data.columns.drop(class)]Y data[class]#划分数据集X_train, X_test, Y_train, Y_test train_test_split(X, Y)lda LinearDiscriminantAnalysis(n_components2)lda.fit(X_train, Y_train)#显示训练结果print lda.means_ #中心点print lda.score(X_test, Y_test) #score是指分类的正确率print lda.scalings_ #score是指分类的正确率X_2d lda.transform(X) #现在已经降到二维X_2dnp.dot(X-lda.xbar_,lda.scalings_)#对于二维数据我们做个可视化#区域划分lda.fit(X_2d,Y)h 0.02x_min, x_max X_2d[:, 0].min() - 1, X_2d[:, 0].max() 1y_min, y_max X_2d[:, 1].min() - 1, X_2d[:, 1].max() 1xx, yy np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))Z lda.predict(np.c_[xx.ravel(), yy.ravel()])Z Z.reshape(xx.shape)plt.contourf(xx, yy, Z, cmapplt.cm.Paired)#做出原来的散点图class1_x X_2d[Y0,0]class1_y X_2d[Y0,1]l1 plt.scatter(class1_x,class1_y,colorb,labeliris.target_names[0])class1_x X_2d[Y1,0]class1_y X_2d[Y1,1]l2 plt.scatter(class1_x,class1_y,colory,labeliris.target_names[1])class1_x X_2d[Y2,0]class1_y X_2d[Y2,1]l3 plt.scatter(class1_x,class1_y,colorr,labeliris.target_names[2])plt.legend(handles [l1, l2, l3], loc best)plt.grid(True)plt.show()if __name__ __main__:main()测试结果Means: #各类的中心点[[ 5.00810811 3.41891892 1.44594595 0.23513514][ 6.06410256 2.80769231 4.32564103 1.33589744][ 6.61666667 2.97222222 5.63055556 2.02777778]]Score: #对于测试集的正确率0.973684210526Scalings:[[ 1.19870893 0.76465114][ 1.20339741 -2.46937995][-2.55937543 0.42562073][-2.77824826 -2.4470865 ]]Xbar:[ 5.89285714 3.0625 3.79375 1.19464286]#Xnp.dot(X-lda.xbar_,lda.scalings_)默认的线性变化方程