API基础知识
Scikit-Learn评估器API的常用步骤如下所示
- 通过从Scikit-Learn中导入适当的评估器类,选择模型类
- 用合适的数值对模型类进行实例化,配置模型超参数(hyperparameter)
- 整理数据(模型需要二维特征矩阵,和一维目标数组),通过前面介绍的方法获取特征矩阵和目标数值
- 调用模型实例的fit()方法对数据进行拟合
- 对新数据应用模型:
1.在有监督学习模型中,通常使用predict()方法预测新数据的标签
2.在无监督学习模型中,通常使用transform()或predict()方法转换或推断数据的性质
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
#设置随机种子,让结果具有重现性
seed = 0
rng = np.random.RandomState(seed)
x = 10 * rng.rand(50)
y = 2*x - 1 +rng.randn(50)
plt.scatter(x,y)
#1.选择模型类 line3
#2.实例化模型,选择模型超参数
model = LinearRegression(fit_intercept=True) #需要计算截距
#3.整理数据
x_transform = x[:,np.newaxis]
#4.调用fit()对数据进行拟合
model.fit(x_transform,y)
# print(model.coef_)
# print(model.intercept_)
#5.预测新数据标签
xfit = np.linspace(-1,10)
xfit_transform = xfit[:,np.newaxis]
yfit = model.predict(xfit_transform)
plt.plot(xfit,yfit)
plt.show()
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
from sklearn.metrics import confusion_matrix
seed = 1
iris = sns.load_dataset('iris')
# X_iris = iris.drop('species',axis=1)#提取出来species列的数据
X_iris = iris.iloc[:,:-1]
Y_iris = iris.iloc[:,-1]
"""
贝叶斯预测
"""
xTrain,xTest,yTrain,yTest = train_test_split(X_iris,Y_iris,random_state=seed)
model = GaussianNB()
model.fit(xTrain,yTrain)
y_model = model.predict(xTest)
accuracy = accuracy_score(yTest,y_model)
print(accuracy)
mat = confusion_matrix(yTest,y_model)#计算混淆矩阵
print(mat)
sns.heatmap(mat,square=True,annot=True,cbar=False)
plt.xlabel('predicted value')
plt.ylabel('true value')
"""
无监督学习示例:鸢尾花数据降维
"""
# model = PCA(n_components=2)
# model.fit(X_iris)
# X_2D = model.transform(X_iris)
# iris['PCA1'] = X_2D[:,0]
# iris['PCA2'] = X_2D[:,1]
# # sns.lmplot("PCA1","PCA2",hue='species',data=iris,fit_reg=False)
# plt.scatter(iris['PCA1'],iris['PCA2'])
#
# plt.show()
"""
无监督学习示例:鸢尾花数据聚类
"""
"""
n_components :高斯模型的个数,即聚类的目标个数
covariance_type : 通过EM算法估算参数时使用的协方差类型,默认是”full”
full:每个模型使用自己的一般协方差矩阵
tied:所用模型共享一个一般协方差矩阵
diag:每个模型使用自己的对角线协方差矩阵
spherical:每个模型使用自己的单一方差
"""
# model = GaussianMixture(n_components=3,covariance_type='full')
# model.fit(X_iris)
# y_gmm = model.predict(X_iris)
#
# iris['cluster'] = y_gmm
# sns.lmplot("PCA1","PCA2",hue='species',data=iris,fit_reg=False,col='cluster')
#
plt.show()