本文是机器学习系列的第三篇,算上前置机器学习系列是第八篇。本文的概念相对简单,主要侧重于代码实践。
上一篇文章说到,我们可以用线性回归做预测,但显然现实生活中不止有预测的问题https域名还有分类的问题。我们可以从预测值的类型上简单区分:连续变量的预测为回归,离散变量的预测为分类。

一、逻辑回归:二分类

1.1 理解逻辑回归

http代理们把连续的预测值进行人工定义,边界的一边定义为1,另一边定义为0。这样我们就把回归问题转换成了分类问http://www.baidu.com题。

机器学习(三):理解逻辑回归及二分类、多分类代码实践

如上图,我们把连续的变量分布压制在0-1的范围内,并以0.5作为我们分类决策的边界,大于0.5的概率则判别为1,小于0.5的概率则判别为0。

机器学习(三):理解逻辑回归及二分类、多分类代码实践

我们无法使用无穷大和负无穷大进行算术运算,我们通过逻辑回归函数(Sigmoid函数/S型函数/测试纸怎么看是否怀孕Logistichttps协议函数)可以讲数值计算限定在0-1之间。

(x)=11+e−xsigma(x) = frachttpclient{1}{1+e^{-x}}

以上就是逻辑回归的简单解释。下面我们应用真实https安全问题的数据案例来进行二分类代码实践。

1.2 代码实践 – 导http 404入数据集

添加HTTPS引用:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplohttps协议t as plt

导入数据集(大家不用在意这个域名):

df =测试抑郁程度的问卷 pd.read_csv('https://blog.caiyongji.com/assets/hearing_test.csv')
df.head()
age physical_score test_result
33 40.7 1
50 37.2 1
52 24.7 0
56 31 0
35 42.9机器学习 1

该数据集,对5000名参与者进行了一项实验,以研究年龄和身体健康对听力损失的影响,尤其是听高音的能力。此数据显示了研究结果对参与者进行了身体能力的评估和评分,然后必须进行音频测试(通过/不通过),以评估他们听到测试抑郁症的20道题高频的能力。

  • 特征:1. 年龄 2. 健康得分
  • 标签:(1通过/0不通过)

1.3 观察数据

sns.scatterplot(x='age',y='physical_score',data=df,hue='test_result')

我们用seaborn绘制年龄和http 302健康得分特征对应测试结果的散点图。

机器学习(三):理解逻辑回归及二分类、多分类代码实践

sns.pahttp 500irplot(df,hue='test_result')

我们通过pairplot方法绘制特征两两之间的对测试自己是否在变声期应关系。

机器学习(三):理解逻辑回归及二分类、多分类代码实践

我们可以大致做出判https协议断,当年龄超过60很难通过测试机器学习,通过测试者普遍健康得分超过3http 4040。

1.4 训练模型http://www.baidu.com

from sklearn.model_selection import train_test_split
from sklearn.prHTTPSeprocessing import StandardScaler
from sklearn.linear_model import LogisticRegreshttps认证sion
from sklearn.metrics import accuracy_score,classification_report,plot_confusion_matrix
#准备数据
X = df.drohttps域名p('test_r测试抑郁症的20道题esult',axis=1)
y = dfhttps和http的区别['test_result']
X_train, X_test, y_train, y_test = train_test_split(Xhttps安全问题,httpclient y, test_size=0.1, random_state=50)
scaler = StandardScaler()
scaled_X_train = scaler.fit_transform(X_train)
scaled_X_test = scaler.transform(X_test)
#定义模型
log_model = Logisthttps安全问题icRegression()
#训练模型
log_model.fit(scaled_X_train,y_train)
#预测数据
y_predhttps协议 = log_model.predict(scaled_X_test)
accuracy_score(y_test,y_pred)

我们经过准备数据,定义模型为LogisticRegression逻辑回归模型,通过fit方法拟合训练数据,最后通过predict方法进行预测。
最终我们调用accuracy_score方法得到模型的准确率为92.2%。

二、模型性能评估:准测试网速确率、精确度、召回率

我们是如何得到准确https认证率是92.2%的呢?我们调用plot_confusion_matrihttps协议x方法绘制混淆矩阵。

plot_confusion_matrix(log_model,scaled_X_test,y_test)

我们观察500个测试实例,得到矩阵如下:

机器学习(三):理解逻辑回归及二分类、多分类代码实践

我们对以上矩阵进行定义如下:

  • 真正类TP(Truehttp协议 Positive) :预测为正,实https和http的区别际结果https认证为正。如,上机器学习图右下角285。测试你的自卑程度
  • 真负类TN(True Negative) :预测为负,实际结果为负。如,上图左上角176。
  • 假正类FP测试你的自卑程度(False Positive) :预测为正,实际结果为负。如,上图左下角19。
  • 假负类FNhttp 500(False Negative) :预测为负,实际结果为正。如,测试抑郁症的20道题上图右上角20。

准确率(Accuracy) 公式如下:

Accuracy=TP+TNTP+TN+FP+FNAccuracy = frac{TP+TN}{TP+TN+FP+FN}

带入本例得:

Accuhttp://www.baidu.comracy=285+176285+176+20+19=0.922Accuracy = frac{285+176}{httpclient285+176+20+19} = 0.922

精确度(Precision) 公式如下:

Precision=http 500T测试你的自卑程度PTP+FPPrecision = frac{TP}测试工程师{TP+FP}

带入本例得:

Precision=285285+httpwatch19=0.9375Precision = frac{285}{285+19} = 0.9375

召回率(Recall) 公式如下:

Rhttpwatchecall=TPT测试抑郁症的20道题P+FNRecall = frac{TP}{TP+FN}

带入本例得:

Recall=285285+20=0.934Rehttp 302call = frhttp://www.baidu.comac{285}{285+20} = 0.934

我们调用classification_report方法可验证结果。

print(classification_report(y_test,y_pred))

机器学习(三):理解逻辑回归及二分类、多分类代码实践

三、Softmax:多分类

3https和http的区别.1 理解softmax多元逻辑回归

Logistic回归和Softmax回归都是基于线性回归的分类模型,两者无本质区别,都是从伯努利分结合最http 302大对数似然估计。

最大似然估计:简单来说,最大似然估http代理计就是利用已知的样本结果测试纸怎么看是否怀孕信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值。

术语“测试纸怎么看是否怀孕概率”(probahttps和http的区别bility)和“似然”(likelihoHTTPod)在英语测试工程师中经常互换使用,但是它们在统计学中的含义却大不相同。给定具有一些参数的统测试工程师计模型,用“概率”一词描述未来的结果x的合理性(知道参数值),而用“似然”一词表示描述在知道结果x之后,一组特定的参数值的合理性。

Softmax回归模型首先计算出每个类的分数,然后对这些分数应用softmax函数,估计每个类的概率。我们预测具有最高估计概率的类,简单来说就是找得分最高的类。

3.2 代码实践 – 导入数据集

导入数据集(大家不用在意这个域名):

df = pd.read_csv('https://blog.caiyongji.com/asse测试工程师ts/iris.csv')
df.head()
sepal_leng测试抑郁症的20道题th sepal_width petal_length petal_width species
5.1 3.5 1.4 0.2 setosa
4.9 3https域名 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2测试抑郁症的20道题 setosa
5 3.6 1.4 0.2 setosa

该数据集,包含150个鸢尾花https和http的区别样本数据,数据特征包含花瓣的长度和宽度和萼片的长度和宽度,包含三个测试你的自卑程度属种的鸢尾花,分别测试你是哪种眼型是山鸢尾(setosa)、变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica)。

  • 特征:1. 花萼长度 2. 花萼宽度 3. 花瓣长度 4 花萼宽度
  • 标签:种类:山鸢尾(setosa)、变色鸢尾(versicohttpclientlor)和维吉尼亚鸢尾(virginica)

3.3 观察数据

sns.scatterplot(x='sepalhttp 302_l测试你是哪种眼型ength',y='sepal_width',data=df,hue='species')

我们用seaborhttpwatchn绘制花萼https和http的区别度和宽度特征对应鸢尾花种类的散点图。

机器学习(三):理解逻辑回归及二分类、多分类代码实践

sns.scatterplot(x='petal_https协议length',y='petal_width',dHTTPSata=df,hue='spehttp 404cies')https和http的区别

我们用sea测试纸怎么看是否怀孕born绘制花瓣长度和宽度特征对应鸢尾花种类的散点图。

机器学习(三):理解逻辑回归及二分类、多分类代码实践

sns.pairplot(df,hue='species')

我们通过pairplot方法绘制特征两两之间的对应关系。

机器学习(三):理解逻辑回归及二分类、多分类代码实践

我们可以大致做出判断,综合考虑花瓣和花萼尺寸最小的为山鸢尾花,中等尺寸的为变色鸢尾花,尺寸最大的为维吉https协议尼亚鸢尾花。

3.4 训练模型https认证

#准备数据
X = df.drop('species',axis=1)
y = df['species']
X_train, X_test, y_traihttps和http的区别n, y_test = train_test_split(X, y, test_size=0.25, random_state=5测试抑郁症的20道题0)
scaler = Sthttps和http的区别andardScaler()
scaled_测试你是不是病娇X_train = scaler.fit_transform(X_train)
scaled_X_test = scahttps域名ler.transhttps域名form(X_test)
#定义模型
softmax_modehttps安全问题l = Lhttp 404ogisticRegression(测试自己是否在变声期multi_class="multinomial",solver="lbfgs", C=10, random_st测试自己是否在变声期ate=50)
#httpwatch训练模型
softmax测试自己是否在变声期_model.fit(scaled_X_train,y_train)
#预测数据
y_pred = softmax_model.predict(scaled_X_test)
accuracy_score(y_test,y_pred)

我们经过准备数据,定测试抑郁症的20道题义模型LogisticRegressionmulti_class="multin测试omial"多元逻辑回归模型,设置求解器为lbfgs,通过fit方法拟合训练数据,最后通过prehttp://www.baidu.comdict方法进行预测。
最终我们调用accuracy_score方法得到模型的准确率为92.1%。

我们调用classification_report方法查看准确率、精确度、召回率。

print(classification_http 302report(y_test,y_pred))

机器学习(三):理解逻辑回归及二分类、多分类代码实践

3.5 拓展:绘制花瓣分类

我们仅提取花瓣长度和花瓣宽度httpclient的特征来绘制鸢尾花的分类图像机器学习

#提取特征
X = df[['petal_length','pe测试自己是否在变声期tal_测试抑郁程度的问卷width']].to_numpy()
y = df["species"].factorize(['setosa', 'versichttpwatcholor','virginica'])[0]
#定义模型
softmax_reg = LogisticRegression(multi_class="multinomial",solver="lbfgs", C=10, random_state=50)
#训练模型测试网速
softmax_reg.fit(X, y)
#随机测试数据
x0, x1 = np.meshgrid(
np.linshttps认证pace(0, 8, 500).reshape(-1, 1),
np.linspace(0, 3.5http://192.168.1.1登录, 200).reshape(-1, 1),
)
X_new = np.c_[xhttp 4040.ravel(), x1.ravel()]
#预测
y_prohttps和http的区别ba = softmax_reg.predict_proba(X_nehttps和http的区别w)
y_predict = softmax_reg.predict(X_new)
#绘制图像https域名
zz1 = y_proba[:, 1].reshape(x0.shape)
zz = y_predict.reshape(x0.shape)
plt.figure(figsize=(10, 4))
plt.plot(X[y==2, 0], X[y==2, 1], "g^", label="Iris virginica")
plt.plot(X[http://192.168.1.1登录y==1, 0], X[y==1, 1], "bs", label="Iris versicolor")
plt.plothttp://www.baidu.com(X[y==0, 0], X[y==0, 1], "yo"http 302, label="Iris seto测试纸怎么看是否怀孕sa")
from matplotlib.colors import ListedColormap
custom_cmap = ListedColormap(['#fahttp协议fab0','#9898ff','#a0faa0'])
plt.chttps认证ont机器学习ourf(x0, x1,测试工程师 zz, cmap=custom_cmap)
contour = plt.contour(x0, x1, zz1, cmap=plt.cm.brg)
plt.clabel(contour, inline=https和http的区别1,https认证 fontsize=12)
plt.xlabel("Petal length", fontsize=14)
plt.ylabel("Petal width", fontsize=14)
plt.legend(loc="center left", fontsize=14)
plt.测试你是哪种眼型axis([0, 7, 0, 3.5])
plt.show()

得到鸢尾花根据花瓣分类的图像如下:

机器学习(三):理解逻辑回归及二分类、多分类代码实践

四、小结

相比于概念的理解,本文更侧重上手实践,通过动手编程你应该有“手热”的感觉了。截至到本文,你应该对机器学习的概念有了一定的掌握,我们简单梳理一下:

  1. 机器学习的分类
  2. 机器学习的工业化流程
  3. 特征、标签、实例、模型的概念
  4. 过拟合、欠拟http协议
  5. 损失函数、最小二乘法
  6. 梯度下降、学习率

7.线性回归、逻辑回归、多项式回归、机器学习逐步回归、岭回归、套索(Lasso)回归、弹性网络(ElasticNet)回归是最常用的回归技术
8. Sigmoid函https和http的区别数、Softmax函数、最大似然估计

如果你还有不清楚的地方请参考:

  • 机器学习(二):理解线性回归与梯度下降并做简单预测
  • 机器学习(一):5分钟理解机器测试抑郁症的20道题学习并上手实践
  • 前置机器学习(五):30分钟掌握常用测试抑郁症的20道题Matplotlib用法
  • 前置机器学习(四):一文掌握Pandas用法
  • 前置机器学习(三):30分钟掌握常用NumPy用法
  • 前置机器学习(二):30分钟掌握常用Jupyter Notebook用法
  • 前置机器学习(一):数学符号及希腊字母