python_sklearn库的使用
读取数据并按比例分为训练集和测试集
import pandas as pd
import sklearn.model_selection import train_test_split
data = pd.read_csv('./dataset/data.csv', header=None, sep='')
x_data = data.iloc[:, :-1] #输入变量
y_data = data.iloc[:, -1:] #实际结果
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.2)
train_test_split()可以将数据按比例随机分为训练集和测试集;参数如下:
第一个参数:输入变量
第二个参数:与输入变量对应的实际结果
test_size:测试集占总数据的比例。例如test_size=0.2,则训练集:测试集=8:2
random_state:随机数的种子。若为None,则每次生成的数据都是随机的;若为整数,则每次生成的数据相同。
使用机器学习算法训练
1.监督学习
sklearn.neighbors #近邻算法
sklearn.svm #支持向量机
sklearn.kernel_ridge #核-岭回归
sklearn.discriminant_analysis #判别分析
sklearn.linear_model #广义线性模型
sklearn.ensemble #集成学习
sklearn.tree #决策树
sklearn.naive_bayes #朴素贝叶斯
sklearn.cross_decomposition #交叉分解
sklearn.gaussian_process #高斯过程
sklearn.neural_network #神经网络
sklearn.calibration #概率校准
sklearn.isotonic #保守回归
sklearn.feature_selection #特征选择
sklearn.multiclass #多类多标签算法
2.无监督学习
sklearn.decomposition #矩阵因子分解
sklearn.cluster #聚类
sklearn.manifold #流形学习
sklearn.mixture #高斯混合模型
sklearn.neural_network #无监督神经网络
sklearn.covariance #协方差估计
3.数据变换
sklearn.feature_extraction #特征提取
sklearn.feature_selection #特征选择
sklearn.preprocessing #预处理
sklearn.random_projection #随机投影
sklearn.kernel_approximation #核逼近
示例
from sklearn.linear_model import LogisticRegression
logr = LogisticRegression() #新建一个逻辑回归器
logr.fit(x_train, y_train.values.ravel()) #对训练集进行拟合
y_pred = logr.predict(x_test) #使用训练好的逻辑回归器对测试集进行预测
计算模型的评价指标
使用sklearn.metrics可以计算模型的各种评价指标,例如:准确率、召回率、精确度、F1分数、ROC曲线、AUC等指标。
from sklearn.metrics import accuracy_score, recall_score, precision_score, roc_curve
acc = accuracy_score(y_test, y_pred) #计算准确率
recall = recall_score(y_test, y_pred) #计算召回率
precision = precision_score(y_test, y_pred) #计算精确度
#ROC曲线
fpr, tpr, thresholds = roc_curve(y_test, y_pred)
plt.([0, 1], [0, 1], 'k-')
plt.plot(fpr, tpr)
plt.show()
from classification_report
print(classification_report(y_test, y_predict, digits=5))
输出结果为:
评价指标说明
准确率:所有样本总被分对的比例
a
c
c
=
T
P
+
T
N
T
P
+
T
N
+
F
P
+
F
N
acc=\frac{TP+TN}{TP+TN+FP+FN}
acc=TP+TN+FP+FNTP+TN
召回率(灵敏度):所有正例中被分对的比例
r
e
c
a
l
l
=
T
P
T
P
+
F
N
recall = \frac{TP}{TP+FN}
recall=TP+FNTP
精确度:被分为正例的示例中实际为正例的比例
p
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
precision = \frac{TP}{TP+FP}
precision=TP+FPTP
特效度:所有负例中被分对的比例(即为classification_report中负样本的recall值)
s
p
e
c
i
f
i
c
i
t
y
=
T
N
F
P
+
T
N
specificity = \frac{TN}{FP+TN}
specificity=FP+TNTN