Scikit-learn提供了几乎所有机器学习算法的开源程序包。其中包含的算法有用于分类(Classification)的逻辑回归(Logistic Regression)、支持向量机分类(SVC)、最近邻法(Nearest Neighbors)、决策树(Decision Tree)、随机森林(Random Forest)等;有用于回归(Regression)的线性回归、多项式回归(Polynomial Regression)、支持向量回归(SVR)、岭回归(Ridge Regression)、Lasso回归等。
同时还有无监督学习的聚类算法(Clustering),包括K均值(K-means)、谱聚类(Spectral Clustering)、Mean-Shift等方法,以及数据降维技术(Dimensionality reduction)中的主成分分析(PCA)、独立成分分析(ICA)等方法。除此之外,还有用于在机器学习中的内置数据加载、数据预处理,包括数据的归一化(Normlization)、数据的标准化(Standardization)、去均值化(Mean Removal)、白化(Whitening)、二值化(Binarization)等。模型选择(Model Selection)中的评估模型、交叉验证、调参以及网格搜索(Grid Search)等。
下面的代码介绍数据预处理、逻辑回归、决策树、K临近算法、支持向量机的基本使用:
# -*- coding: utf-8 -*
from sklearn import datasets # 数据集
from sklearn.model_selection import train_test_split # 数据集分成训练集和测试集
from sklearn.linear_model import LogisticRegression # 线性模型中的逻辑回归
from sklearn import metrics # 性能指标库
from sklearn.tree import DecisionTreeClassifier # 决策树
from sklearn.neighbors import KNeighborsClassifier # KNN最近邻分类包
from sklearn import svm # 支持向量机
import numpy as np
def main():
# 1、加载自带数据库,鸢尾花
iris = datasets.load_iris()
print('print1:')
print('iris.data:')
print(iris.data) # 样本特征
print('iris.target:')
print(iris.target) # 数据集的目标值
# 2、将数据集划分为训练集和测试集
iris_x = iris.data
iris_y = iris.target
x_train, x_test, y_train, y_test = train_test_split(iris_x, iris_y, test_size=0.3)
print('print2:')
print(x_train.shape)
print(x_test.shape)
print(y_train.shape)
print(y_test.shape)
# 3、逻辑回归分析
lr = LogisticRegression()
lr.fit(x_train, y_train) # 用逻辑回归算法拟合
print('print3:logistic_regression')
print(lr.coef_) # 逻辑回归的求解参数
y_pred = lr.predict(x_test) # 对测试集进行预测
mse = metrics.mean_squared_error(y_test, y_pred) # 均方差
rmse = np.sqrt(mse) # 均方根差
print('mse = ', mse)
print('rmse = ', rmse)
# 4、决策树算法
tree_clf = DecisionTreeClassifier(max_depth=2)
tree_clf.fit(x_train, y_train)
y_pred = tree_clf.predict(x_test)
mse = metrics.mean_squared_error(y_test, y_pred) # 均方差
rmse = np.sqrt(mse) # 均方根差
print('print4:decision_tree')
print('mse = ', mse)
print('rmse = ', rmse)
# 5、K临近算法
knn = KNeighborsClassifier()
knn.fit(x_train, y_train)
y_pred = knn.predict(x_test)
mse = metrics.mean_squared_error(y_test, y_pred) # 均方差
rmse = np.sqrt(mse) # 均方根差
print('print5:knn')
print('mse = ', mse)
print('rmse = ', rmse)
# 6、支持向量机
svm_alg = svm.SVC()
svm_alg.fit(x_train, y_train)
y_pred = svm_alg.predict(x_test)
mse = metrics.mean_squared_error(y_test, y_pred) # 均方差
rmse = np.sqrt(mse) # 均方根差
print('print6:svm')
print('mse = ', mse)
print('rmse = ', rmse)
if __name__ == '__main__':
main()