两学一做网站网站企业网站首页设计评价
2026/2/14 20:55:20 网站建设 项目流程
两学一做网站网站,企业网站首页设计评价,成都旅游攻略详细,个人做理财网站Day 83#xff1a;【99天精通Python】机器学习进阶 - 分类问题与逻辑回归 前言 欢迎来到第83天#xff01; 在昨天的课程中#xff0c;我们学习了回归 (Regression) 问题#xff0c;即预测一个连续的数值#xff08;如房价#xff09;。 今天#xff0c;我们要学习机器学…Day 83【99天精通Python】机器学习进阶 - 分类问题与逻辑回归前言欢迎来到第83天在昨天的课程中我们学习了回归 (Regression)问题即预测一个连续的数值如房价。今天我们要学习机器学习的另一大类问题——分类 (Classification)。分类问题的目标是预测一个离散的类别比如判断一封邮件是垃圾邮件还是非垃圾邮件二分类。识别一张图片是猫、“狗还是鸟”多分类。我们将从最基础的分类算法逻辑回归 (Logistic Regression)开始。虽然它名字里有回归但它是一个分类算法本节内容分类与回归的区别逻辑回归原理与 Sigmoid 函数数据集加载与可视化训练与评估 (准确率、混淆矩阵)实战练习鸢尾花分类一、逻辑回归原理逻辑回归是如何做分类的它先像线性回归一样计算一个得分z w*x b。这个得分z是一个连续值可以是负无穷到正无穷。然后它用一个Sigmoid 函数将z压缩到 0-1 之间得到一个概率值。最后设置一个阈值如 0.5大于 0.5 判为类别 1小于 0.5 判为类别 0。Sigmoid 函数σ(z)11e−z \sigma(z) \frac{1}{1 e^{-z}}σ(z)1e−z1​importnumpyasnpimportmatplotlib.pyplotaspltdefsigmoid(z):return1/(1np.exp(-z))znp.linspace(-10,10,100)plt.plot(z,sigmoid(z))plt.title(Sigmoid Function)plt.grid(True)# plt.show()二、实战鸢尾花分类 (Iris Dataset)鸢尾花数据集是机器学习分类问题的Hello World。它包含 3 种鸢尾花每种花有 4 个特征花萼长/宽、花瓣长/宽。我们的任务是根据花的特征判断它属于哪一类。2.1 加载数据importpandasaspdfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLogisticRegression# 1. 加载数据irisload_iris()Xiris.data# 特征yiris.target# 目标 (0, 1, 2)# 为了方便我们只做二分类判断是否是 setosa (类别0)# 将问题简化为是 setosa (1) 还是不是 setosa (0)y_binary(y0).astype(int)# 2. 划分数据集X_train,X_test,y_train,y_testtrain_test_split(X,y_binary,test_size0.3,random_state42)2.2 训练模型# 1. 创建模型# C 是正则化强度的倒数C越小正则化越强modelLogisticRegression(C1.0)# 2. 训练model.fit(X_train,y_train)# 3. 预测y_predmodel.predict(X_test)print(f预测结果:{y_pred})print(f真实结果:{y_test})三、模型评估 (Classification)对于分类问题我们不能用 MSE。最常用的指标是准确率 (Accuracy)。3.1 准确率准确率 (预测正确的样本数) / (总样本数)fromsklearn.metricsimportaccuracy_score accaccuracy_score(y_test,y_pred)print(f准确率:{acc:.2f})# 结果通常是 1.00因为这个问题太简单了3.2 混淆矩阵 (Confusion Matrix)准确率高不一定代表模型好比如预测地震99.99% 的时间都是不发生。混淆矩阵能更详细地展示模型犯了哪种错误。预测为0预测为1真实为0TN (真阴)FP (假阳)真实为1FN (假阴)TP (真阳)fromsklearn.metricsimportconfusion_matriximportseabornassns cmconfusion_matrix(y_test,y_pred)plt.figure(figsize(6,4))sns.heatmap(cm,annotTrue,fmtd)plt.xlabel(Predicted)plt.ylabel(Actual)plt.title(Confusion Matrix)# plt.show()3.3 分类报告 (Classification Report)包含精确率 (Precision)、召回率 (Recall)、F1-score。精确率你预测为 1 的里面有多少真的是 1别误报召回率所有真的 1 里面你找出了多少别漏报fromsklearn.metricsimportclassification_reportprint(classification_report(y_test,y_pred,target_names[Not Setosa,Setosa]))四、特征标准化 (Standardization)在很多算法中包括逻辑回归如果特征的数值范围差别很大如年龄 20-80 vs 收入 1万-100万模型会学得不好。我们需要把所有特征都缩放到同一个尺度。fromsklearn.preprocessingimportStandardScaler scalerStandardScaler()# 在训练集上学习缩放规则X_train_scaledscaler.fit_transform(X_train)# 在测试集上应用相同的规则 (不能 fit 测试集防止数据泄露)X_test_scaledscaler.transform(X_test)# 用缩放后的数据重新训练model.fit(X_train_scaled,y_train)# ...五、小结分类问题逻辑回归模型评估数据预处理Sigmoid 函数 (0-1概率)LogisticRegression()accuracy_scoreconfusion_matrixclassification_reportStandardScaler (标准化)关键要点逻辑回归是分类算法不是回归算法。分类问题的评估指标比回归更丰富准确率、精确率、召回率。特征标准化 (StandardScaler) 是一个好习惯。六、课后作业多分类修改代码直接对鸢尾花 3 分类问题进行训练LogisticRegression默认支持多分类multi_classauto。查看其准确率。换个模型查阅 sklearn 文档使用KNeighborsClassifier(K近邻) 或SVC(支持向量机) 来解决同样的问题对比准确率。癌症诊断加载load_breast_cancer数据集训练一个逻辑回归模型预测是良性还是恶性肿瘤。下节预告Day 84机器学习进阶 - 决策树与随机森林- 逻辑回归是线性模型如果数据边界是弯曲的怎么办明天我们学习强大的非线性模型——决策树以及它的加强版随机森林。系列导航上一篇Day 82 - 机器学习入门Scikit-Learn下一篇Day 84 - 决策树与随机森林待更新

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询