Sklearn (全称 Scikit-Learn) 是基于 Python 语言的机器学习工具。它建立在 NumPy, SciPy, Pandas 和 Matplotlib 之上,里面的 API 的设计非常好,所有对象的接口简单,很适合新手上路。

SKLearn对常用的机器学习方法进行了封装,例如,分类、回归、聚类、降维、模型评估、数据预处理等,我们只需调用对应的接口即可。
在 SKLearn 的官网上,写着以下四点介绍:

1.SKLearn安装
pip install scikit-learn
#也可以使用清华镜像源安装
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple
数据集导入:
#鸢尾花数据集
from sklearn.datasets import load_iris
#乳腺癌数据集
from sklearn.datasets import load_breast_cancer
#波士顿房价数据集
from sklearn.datasets import load_boston
数据预处理:
#拆分数据集
from sklearn.model_selection import train_test_split
#数据缩放
from sklearn.preprocessing import MinMaxScaler
特征抽取:
from sklearn.feature_extraction import DictVectorizer
v = DictVectorizer(sparse=False)
D = [{'foo': 1, 'bar': 2}, {'foo': 3, 'baz': 1}]
X = v.fit_transform(D)
特征选择:
from sklearn.datasets import load_digits
from sklearn.feature_selection import SelectKBest, chi2
X, y = load_digits(return_X_y=True)
## 特征选择
X_new = SelectKBest(chi2, k=20).fit_transform(X, y)
常用模型:
#KNN模型
from sklearn.neighbors import KNeighborsClassifier
#决策树
from sklearn.tree import DecisionTreeClassifier
#支持向量机
from sklearn.svm import SVC
#随机森林
from sklearn.ensemble import RandomForestClassifier
建模拟合与预测:
#拟合训练集
knn.fit(X_train,y_train)
#预测
y_pred=knn.predict(X_test)
模型评估:
#求精度
knn.score(X_test,y_test)
#绘制混淆矩阵
from sklearn.metrics import confusion_matrix
#绘制ROC曲线
from sklearn.metrics import roc_curve,roc_auc_score
典型的建模流程示例:
## 加载数据
import numpy as np
import urllib
## 下载数据集
url = "http://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
raw_data = urllib.urlopen(url)
## 加载CSV文件
dataset = np.loadtxt(raw_data, delimiter=",")
## 区分特征和标签
X = dataset[:,0:7]
y = dataset[:,8]
## 数据归一化
from sklearn import preprocessing
## 幅度缩放
scaled_X = preprocessing.scale(X)
## 归一化
normalized_X = preprocessing.normalize(X)
## 标准化
standardized_X = preprocessing.scale(X)
## 特征选择
from sklearn import metrics
from sklearn.ensemble import ExtraTreesClassifier
model = ExtraTreesClassifier()
model.fit(X, y)
## 特征重要度
print(model.feature_importances_)
## 建模与评估
from sklearn import metrics
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
print('MODEL')
print(model)
## 预测
expected = y
predicted = model.predict(X)
## 输出评估结果
print('RESULT')
print(metrics.classification_report(expected, predicted))
print('CONFUSION MATRIX')
print(metrics.confusion_matrix(expected, predicted))
## 超参数调优
from sklearn.model_selection import GridSearchCV
param_grid = {'penalty' : ['l1', 'l2', 'elasticnet'],
'C': [0.1, 1, 10]}
grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5)
以上代码,如果数据集无法下载,可以去下面的gitee仓库下载。 https://gitee.com/biabianm/pima-indians-diabetes
代码修改如下:
import numpy as np
import urllib.request
## 加载CSV文件
dataset = np.loadtxt("pima-indians-diabetes.csv", delimiter=",", skiprows=1)