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

图灵汇官网

本文是机器学习系列的第三篇,涵盖了线性回归、逻辑回归和Softmax回归的基础知识。重点在于实际操作,以便读者能通过编程实践更好地理解这些概念。

一、逻辑回归:二分类

1.1 逻辑回归基础

在回归问题中,我们通常需要预测连续值。然而,在分类问题中,我们需要预测的是离散的类别。逻辑回归是一种特殊的回归模型,它将连续的预测值转化为离散的分类结果。具体而言,我们将预测值限制在0到1之间,并以此作为分类决策的标准。当预测值大于0.5时,我们认为属于一类;否则,属于另一类。

1.2 数据准备与导入

我们首先导入必要的库,包括NumPy、Pandas、Seaborn和Matplotlib,以及Scikit-Learn库中的相关模块。然后,我们加载一个关于听力测试的数据集,该数据集记录了5000名参与者的年龄、健康得分以及是否通过听力测试的情况。

```python import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt from sklearn.modelselection import traintestsplit from sklearn.preprocessing import StandardScaler from sklearn.linearmodel import LogisticRegression from sklearn.metrics import accuracyscore, classificationreport, plotconfusionmatrix

df = pd.readcsv('https://blog.caiyongji.com/assets/hearingtest.csv') ```

1.3 数据观察

通过绘制散点图和配对图,我们发现年龄超过60岁的参与者很难通过测试,而通过测试的参与者往往健康得分较高。

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

1.4 模型训练与评估

接下来,我们使用逻辑回归模型进行训练,并通过测试数据进行验证。最终模型的准确率为92.2%。

```python X = df.drop('testresult', axis=1) y = df['testresult'] Xtrain, Xtest, ytrain, ytest = traintestsplit(X, y, testsize=0.1, randomstate=50)

scaler = StandardScaler() scaledXtrain = scaler.fittransform(Xtrain) scaledXtest = scaler.transform(X_test)

logmodel = LogisticRegression() logmodel.fit(scaledXtrain, ytrain) ypred = logmodel.predict(scaledX_test)

accuracyscore(ytest, y_pred) ```

二、模型性能评价

为了进一步了解模型的表现,我们绘制了混淆矩阵,并计算了准确率、精确率和召回率。

python plot_confusion_matrix(log_model, scaled_X_test, y_test) print(classification_report(y_test, y_pred))

三、Softmax回归:多分类

3.1 Softmax回归基础

Softmax回归是一种多分类算法,它基于逻辑回归,但可以处理多个类别。它首先计算每个类别的得分,然后通过Softmax函数将其转化为概率分布。最终,我们选择具有最高概率的类别作为预测结果。

3.2 数据准备与导入

我们使用另一个鸢尾花数据集,该数据集包含150个样本,每个样本有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。标签为三种鸢尾花的种类。

python df = pd.read_csv('https://blog.caiyongji.com/assets/iris.csv')

3.3 数据观察

通过绘制散点图和配对图,我们发现花瓣尺寸较小的通常是山鸢尾,中等尺寸的是变色鸢尾,而较大的是维吉尼亚鸢尾。

python sns.scatterplot(x='sepal_length', y='sepal_width', data=df, hue='species') sns.scatterplot(x='petal_length', y='petal_width', data=df, hue='species') sns.pairplot(df, hue='species')

3.4 模型训练与评估

我们使用Softmax回归模型进行训练,并通过测试数据进行验证。最终模型的准确率为92.1%。

```python X = df.drop('species', axis=1) y = df['species'].factorize(['setosa', 'versicolor', 'virginica'])[0] Xtrain, Xtest, ytrain, ytest = traintestsplit(X, y, testsize=0.25, randomstate=50)

scaler = StandardScaler() scaledXtrain = scaler.fittransform(Xtrain) scaledXtest = scaler.transform(X_test)

softmaxmodel = LogisticRegression(multiclass="multinomial", solver="lbfgs", C=10, randomstate=50) softmaxmodel.fit(scaledXtrain, ytrain) ypred = softmaxmodel.predict(scaledX_test)

accuracyscore(ytest, ypred) print(classificationreport(ytest, ypred)) ```

四、小结

本文通过实例讲解了逻辑回归和Softmax回归的应用。通过动手实践,读者应该对这两种分类算法有了更深刻的理解。希望这些内容能帮助读者进一步掌握机器学习的基础知识。

如果您有任何疑问或需要进一步的帮助,请随时参考相关的前置课程。

本文来源: 图灵汇 文章作者: 手机网