sklearn逻辑回归参数设置_【机器学习笔记】:逻辑回归实战练习(二)

2023-11-05

作者:xiaoyu

微信公众号:Python数据科学

知乎:python数据分析师

前言

前几篇介绍了逻辑回归在机器学习中的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的

以及逻辑回归的理论和公式推导:路远:【机器学习笔记】:从零开始学会逻辑回归(一)

继上一篇,本篇将引出一个逻辑回归的实战练习,利用逻辑回归进行二分类,通过练习你将学会:

  • 理解逻辑回归模型参数的含义
  • 使用sklearn构建逻辑回归模型
  • 可视化逻辑回归分类效果
  • 评估逻辑回归模型

两个变量的简单数据集

上一篇,我们已经推导出了逻辑回归参数求解的迭代公式,自己通过numpyscipy的使用就可以很容易地实现一个逻辑回归模型。当然,sklearn库已经有了封装好了的逻辑回归类LogisticRegression,下面我们将在一个简单的数据集上使用逻辑回归实现二分类。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LogisticRegression

# 导入数据集
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
Y = dataset.iloc[:,4].values

# 将数据集分成训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)
y_test = pd.Series(y_test)

# 简单的预处理,特征缩放
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

# 构建模型,预测测试集结果
classifier = LogisticRegression()
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)

通过上面简单的调用sklearn库的类方法我们就训练出了一个简单的逻辑回归模型,使用的都是默认参数。下面让我们看看简单的模型分类效果究竟如何。

from matplotlib.colors import ListedColormap
X_set,y_set=X_train,y_train
X1,X2=np.meshgrid(np.arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np.arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('#C65749', '#338DFF')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())
for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                c = ListedColormap(('red', 'blue'))(i), label=j)

plt. title(' LOGISTIC(Training set)')
plt. xlabel(' Age')
plt. ylabel(' Estimated Salary')
plt. legend()
plt. show()

X_set,y_set=X_test,y_test
X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('#C65749', '#338DFF')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())
for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                c = ListedColormap(('red', 'blue'))(i), label=j)

plt.title(' LOGISTIC(Test set)')
plt.xlabel(' Age')
plt.ylabel(' Estimated Salary')
plt.legend()
plt.show()

上图是训练集分类效果,下图是测试集的分类效果,简单总结一下上面内容:

Python语言方面:使用了meshgrid方法将二维坐标划分成了间隔非常小的矩阵细小点,然后使用了contourf方法与模型预测结果对比判断分类结果。此外,使用了scatter散点图绘制了原数据分布点作为分类前后的比对。

逻辑回归理论方面:可以明显看到,在二维坐标中,逻辑回归是以一条直线进行分类的,很好的说明了逻辑回归的本质是线性分类的。同时我们也看到,目前情况下训练集中混在蓝色点中的一些红色点是无论如何也无法正确的分类出来的,这也正是它的缺点,所以说逻辑回归的分类准确度还是相对稍低的。

更多变量的数据集

下面我们将要在一个数据量更大,变量更多的的数据集上进行测试。由于我们需要一个二分类的数据集,所以这里使用了“泰坦尼号生还者预测”的数据集。

https://www. kaggle.com/c/titanic/da ta

当然,直接使用原始数据是不行的。为了方便,数据已被我提前处理,经过了清洗、预处理、变换、筛选和衍生,可直接供模型训练。因此,我们可以直接通过sklearn构建模型,看一下sklearn中逻辑回归的参数都有哪些。

from sklearn.linear_model import LogisticRegression

classifier_default = LogisticRegression()
classifier_default

结果如下:

LogisticRegression(C=1.0,
                   class_weight=None,
                   dual=False, 
                   fit_intercept=True,
                   intercept_scaling=1, 
                   max_iter=100, 
                   multi_class='ovr',
                   n_jobs=1,
                   penalty='l2',
                   random_state=None, 
                   solver='liblinear',
                   tol=0.0001,
                   verbose=0, 
                   warm_start=False)

上面是是逻辑回归的所有参数配置,都是默认的。乍一看是有很多参数,但其实只有几个是比较关键的。下面将对逻辑回归参数进行总结分类和解释。

Logistic模型参数解释

正则化参数:属于该分类的参数有 C 和 penalty。

  • C:C参数与惩罚系数成反比,C值越小,则正则化效果越强,即对参数的惩罚程度越大。
  • penalty:提供我们正则化的类型,L1范数正则化和L2范数正则化(在线性回归中相当于lasso回归和岭回归),默认情况下使用L2正则化,但此参数也需要与solver类型配合使用,因为一些solver有一些限制。关于L1和L2正则化的区别和理解后续进行介绍。

优化算法参数选择 solver:优化算法有四种实现方式,分别是:liblinear,lbfgs,newton-cg,sag,下面是四种算法的介绍。

这四种算法各有一些特点,如果是L2正则化,可选的优化算法有newton-cg,lbfgs,liblinear,sag,四个均可以选择。但是如果是L1正则化,就只能选择liblinear。这是因为L1正则化的损失函数不是连续可导的,而newton-cg,lbfgs,sag这三种优化算法都需要损失函数的一阶或者二阶连续导数,liblinear并没有这个依赖。简单来说,liblinear对于L1和L2都适用,而其他三种只适用L2。

另外,sag是我们上一篇使用的梯度下降的变种随机平均梯度下降,它每次仅使用了部分样本进行梯度迭代,所以当数据量较少时不宜选用,而当数据量很大时,sag是第一选择,计算速度会加快。但是sag不能用于L1正则化,所以当你有大量的样本,又需要L1正则化的话就要自己做取舍了。要么通过对样本采样来降低样本量,要么回到L2正则化。

迭代参数:相关参数有max_iter和tol。

  • max_iter:参数求解的迭代次数,默认100。迭代次数过小会影响准确率,迭代次数过高会影响速度,一般会折中考虑。
  • tol:残差收敛条件,即迭代的连续两次之间残差小于tol就停止,默认是0.0001。

权重参数 class_weight:这个参数可以调节样本比例。一个很常见的例子是网贷违约预测中用户的好坏比,通常好用户占绝大部分,所以样本是不均衡的。除了采样方法处理外,也可以使用该参数进行调节。参数选择 balanced 则可以自动计算样本比例来达到平衡,或者也可以通过自定义比例来达到同样效果。

多分类参数 multi_class:我们上面举的例子都是默认二分类的,但逻辑回归也可以用于多分类,有 ovr 和 multinomial 两个值可以选择,默认是 ovr。ovr是one-vs-rest(OvR),而multinomial是many-vs-many(MvM)。如果是二元逻辑回归,ovr和multinomial并没有任何区别,区别主要在多元逻辑回归上。

OvR相对简单,但分类效果相对略差(这里指大多数样本分布情况,某些样本分布下OvR可能更好)。而MvM分类相对精确,但是分类速度没有OvR快。如果选择了ovr,则4种损失函数的优化方法liblinear,newton-cg, lbfgs和sag都可以选择。但是如果选择了multinomial,则只能选择newton-cg, lbfgs和sag了。

了解参数的意义后,我们可以开始尝试调节一下这些参数,通过参数调节,可以有效避免过拟合等现象,以此实现一个效果更优,更健壮的模型。

Logistic模型参数调试

下面我们手动调节几个参数,来感受一下这些参数是如何影响最终结果的。

# 配置调节参数
C_list = [0.0001, 1, 1000]
max_iter_list = [1, 50, 100]
classifiers = ClassifierGenerator('C', C_list)
Auc_plot(classifiers, X_test, 'C')

当然,对于不同参数的选择,我们可以通过查看ROC和AUC,以此来衡量结果。首先,我们调节C参数,分别是0.0001,1,和1000,查看这三个不同值下的ROC曲线和AUC值。如果对ROC/AUC不清楚,可以参考我的这个回答:精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

上面是三个C取值在测试集数据上的评估结果,可以看到:C=0.0001的时候,AUC值为0.91,这说明模型可能出现了过拟合的现象。因为,C越小,惩罚程度越大,参数可能过度学习而无法在测试集上泛化,因此测试集上AUC值相对低。

而C的其它两个取值,1和1000,虽然二者ROC曲线稍有不同,但是AUC值都是0.92,所以就单独C参数来讲,二者皆可。

同样的,可以对比不同max_iter参数值的不同结果。

# 配置调节参数
C_list = [0.0001, 1, 1000]
max_iter_list = [1, 100]
classifiers = ClassifierGenerator('max_iter', max_iter_list)
Auc_plot(classifiers, X_test, 'max_iter')

迭代次数为1情况下AUC值0.91,偏低,而为100的时候AUC值为0.92。这说明迭代次数(max_iter=1)太低导致出现了欠拟合。

自动化查找最优参数

上面我们手动地调节了一些参数,但是这些参数是一起其作用的,单独调节的情况下不一定能够保证最好,最好的情况是一个完美的参数搭配或者组合。那么如何找到这样的搭配呢?除了凭借经验手动调参以外,还可以使用sklearn的一个工具。

sklearn中提供了一种自动搜索最优参数的方法:GridSearchCV,它是基于提供的参数选项,组合出各种可能,然后结合交叉验证对所有可能组合进行筛选。因此,通过使用该方法,我们就可以简单地找到相对上面单独参数调节更好的参数组合了。

还是通过上面的例子继续说明,自动调参代码如下:

from sklearn.model_selection import GridSearchCV
import warnings
warnings.filterwarnings("ignore")

# 参数设置
params = {'C':[0.0001, 1, 100, 1000],
          'max_iter':[1, 10, 100, 500],
          'class_weight':['balanced', None],
          'solver':['liblinear','sag','lbfgs','newton-cg']
         }
lr = LogisticRegression()
clf = GridSearchCV(lr, param_grid=params, cv=10)
clf.fit(X_train,y_train)

将所有参数设置考虑进去,训练数据,结果我们可以得到:

>>clf.best_params_

out:
{'C': 1, 'class_weight': None, 'max_iter': 10, 'solver': 'sag'}

上面结果就是我们基于自己提供的参数选择要找的最佳参数组合了。

构建最优模型

有了最优的参数后,我们将这些参数作为输入重新建立一个逻辑回归模型。代码如下:

# 根据以上绘图结果选择一个合理参数值
classifier = LogisticRegression(**clf.best_params_)
# 训练模型
classifier.fit(X_train, y_train)

# 预测测试集结果
y_pred = classifier.predict(X_test)
y_score = classifier.predict_proba(X_test)[:,1]

成功构建模型后,我们再次进行分类,并看一下最终的评估指标ROC曲线,AUC值,以及KS值:

# roc/auc计算
y_score = classifier.predict_proba(X_test)[:,1]
fpr,tpr,threshold = metrics.roc_curve(y_test, y_score)
roc_auc = metrics.auc(fpr,tpr)

# 绘制roc曲线
f,ax = plt.subplots(figsize=(8,6))
plt.stackplot(fpr, tpr, color='#338DFF', alpha = 0.5, edgecolor = 'black')
plt.plot(fpr, tpr, color='black', lw = 1.5)
plt.plot([0,1],[0,1], color = 'red', linestyle = '--', lw = 2)
plt.text(0.5,0.3,'ROC curve (area = %0.2f)' % roc_auc)
plt.xlabel('1-Specificity')
plt.ylabel('Sensitivity')
plt.show()

from ks_visual import plot_ks
# 观察ks指标,并绘制ks曲线
plot_ks(y_test = y_test, y_score = y_score, pf = 1)

可以看到,AUC值为0.92,KS值为0.75,说明分类模型的区分能力和准确度都不错。但要提醒的是:这样的好结果并不全是逻辑回归模型的功劳,而更多的是前期特征工程的贡献。只有做出好的特征,提高数据质量,才能最大程度上的提高最终效果。

如果觉得有帮助,还请给点个赞!欢迎关注我的个人公众号:Python数据科学

参考: https://www. cnblogs.com/pinard/p/60 35872.html
从零开始学习数据分析和挖掘,刘顺祥 https:// github.com/MLEveryday/1 00-Days-Of-ML-Code
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sklearn逻辑回归参数设置_【机器学习笔记】:逻辑回归实战练习(二) 的相关文章

  • 预处理等等

    预处理 define 宏定义是个演技非常高超的替身演员 但也会经常耍大牌的 所以我们用它要慎之又慎 它可以出现在代码的任何地方 从本行宏定义开始 以后的代码就就都认识这个宏了 也可以把任何东西定义成宏 因为编译器会在预编译的时候用真身替换替
  • Qt浅谈之一:内存泄露

    一 简介 Qt内存管理机制 Qt 在内部能够维护对象的层次结构 对于可视元素 这种层次结构就是子组件与父组件的关系 对于非可视元素 则是一个对象与另一个对象的从属关系 在 Qt 中 在 Qt 中 删除父对象会将其子对象一起删除 C 中del
  • 目标检测算法中,COCO评价指标的解析

    与图像分类的评价指标有所不同 图像分类是在所有的图像中分类正确和错误的概率 而目标检测显然不能这样来 那怎样才算检测正确 1 loU大于指定阈值 2 类别正确 3 confidence大于指定阈值 其实这三点在COCO评价指标当中都会运用到
  • AsyncContext优雅实现HTTP长轮询接口

    一 背景 接到一个需求 实现方案时需要提供一个HTTP接口 接口需要hold住5 8秒 轮询查询数据库 一旦数据库中值有变化 取出变化的值进行处理 处理完成后返回响应 这不就是长轮询吗 如何优雅的实现呢 二 方案设计 在 Spring 中
  • Bean和Map转换的工具类

    Bean和Map转换的工具类 依赖包 基于Spring的cglib 实现 如果是Spring项目 可以不引入依赖
  • allllll

    算法是解决某个问题所需要的方法和步骤 1分 A 对 B 错 Python程序是区分大小写的 1分 A 对 B 错 参考答案 A 不可以在同一台计算机上安装多个Python版本 1分 A 对 B 错 参考答案 B 解释程序对高级语言编写的程序
  • html中table分页显示,html中table表格分页

    表格分页 注 样式有点丑 但是功能是实现的 按照的是每页显示10数据加一行表头varmytable varmy new table var my href1 var my href2 var temp1 0 var temp2 0 var
  • TS实现原生数组方法之遍历:filter()

    function Array prototype filter description 循环遍历数组每个元素筛选出符合给定条件的元素组成的数组 param callback callback三个参数 1 当前值 2 当前索引 可选 3 当前
  • HashMap多个构造方法的理解

    1 创建HashMap除了常用的空方法 Map map new HashMap 2 还有一个入参的 这个入参并不是指创建大小为3的HashMap 而是创建大于3的最小2的n次方大小的HashMap 比如3 实际创建的长度为2 2 4 以此类
  • 一文打通ER图(手把手教你画)

    目录 什么是er图 什么是实体类型 什么是属性 什么是联系 一对一 一对多 多对多 注意点 例题解答 期末了 E R图也是大学课程设计中经常用到的 也是期末考的重点 毕竟大学生也没什么好考的 最近也有不少同学问 不少单子也扯到E R图 但是
  • 你还好吗

    最近突发奇想 假如某一天 我不在 这一行干了 那我又该去找什么样的工作 又该何去何从 活了二十几年 也没培养出什么兴趣爱好 也没什么特长优点 迷茫的人生 迷茫的我 我想听听你们的意见
  • openGauss学习笔记-09 openGauss 简单数据管理-创建数据库

    文章目录 openGauss学习笔记 09 openGauss 简单数据管理 创建数据库 9 1 语法格式 9 2 参数说明 9 3 示例 openGauss学习笔记 09 openGauss 简单数据管理 创建数据库 数据库安装完成后 默
  • 【爬虫进阶】猿人学任务六之回溯(难度3.0)

    目录 前言 分析 扣代码 Js改写 代码过程 结果 前言 本文讲解猿人学web题目第6题 内容难点如下 颜文字 JSUnFuck 分析 打开题目网站 F12 点击XHR 找出数据接口 看到请求参数这里 m是加密的 q是两个时间戳 全局搜索加
  • FindBugs错误修改指南

    1 EC UNRELATED TYPES Bug Call to equals comparing different types Pattern id EC UNRELATED TYPES type EC category CORRECT
  • 圆盘找数

    任务 三 圆盘找数 一 目的与要求 1 目的 使学生掌握数组的概念 阅读 编写和调试数组的要领 通过本实训可加深对于数组 最大值 最小值的理解和加强数组处理 分类求值 最大 小 值得求法等比较技术编程能力的训练 2 要求 1 根据问题域设计
  • VBA中的Application.Calculation,公式的计算方式

    VBA经典应用69例 10178981 是我推出的第九套教程 教程是专门针对初级 中级学员在学习VBA过程中可能遇到的案例展开 这套教程案例众多 紧贴 实战 并做 战术总结 以便大家能很好的应用 教程的目的是要求大家在实际工作中要利用好VB
  • 目标检测论文解读复现之六:基于YOLOv5的遥感图像舰船的检测方法

    目标检测论文解读复现 文章目录 目标检测论文解读复现 前言 一 摘要 二 网络模型及核心创新点 三 应用数据集 四 实验效果 五 实验结论 六 投稿期刊介绍 前言 此前出了目标改进算法专栏 但是对于应用于什么场景 需要什么改进方法对应与自己
  • 【实战】Python爬虫之代理使用详解

    在Python爬虫中 代理的使用非常常见 代理的主要作用是隐藏客户端的真实IP地址 从而实现更高的网络访问速度和更好的访问隐私保护 下面我们将通过Python爬虫的实例 带你详细了解Python爬虫中代理的使用方法 目录 1 代理原理和作用
  • 随机生成小球(万家灯火的感觉)

    事发年前 新冠之前 拿到一张psd 全部静态 老板说想让他动起来 在我们这种老板吃死技术的小公司只能自己想办法 你想要ui no我们只有美工哈哈哈 独立自强的我瞬间想到transition enter leave cubic bezier之

随机推荐

  • 利用Python进行心脏病患者特征分析

    今天要跟大家说到的一个数据集分析 是关于心脏病的 心脏病作为全球第一大杀手 是我们不得不提前防御的疾病 今天我们利用Python从一份心脏病数据集中找出一些规律 看下哪些特征对于确诊心脏病影响比较大 从而提醒我们注意平时的生活规律 数据集介
  • 解决报错error resource androidattrdialogCornerRadius not found

    解决报错error resource android attr dialogCornerRadius not found 1 问题描述 运行Android Studio程序 产生报错error resource android attr d
  • 计算机大三学生怎么找实习工作?学了计算机很迷茫怎么办?

    学了计算机很迷茫怎么办呢 很多计算机大三学生找不到实习工作 也不知道从哪找实习工作 甚至常常怀疑自己的学习有没有意义 今日就由小编为大家简要介绍下吧 学了计算机很迷茫怎么办 学了计算机很迷茫怎么办呢 经常有很多学生发生这样的感慨 事实上绝大
  • sklearn中的fit_transform和transform以及什么时候使用

    在使用sklearn对数据进行预处理的时候很有可能会遇到fit transform和transform 网上不少资料写的模棱两可 在这里我回答几个核心问题 也许看完我写的这篇文章 一些疑惑就会豁然开朗 为什么在训练集进行fit而不在测试集f
  • c++的并归排序怎么写

    答 C 的并归排序的写法如下 1 如果数组只有一个元素 则返回该元素 2 否则 将数组分成两半 3 使用递归 对每一半进行并归排序 4 将排序后的两个子数组合并 5 返回排序后的结果
  • C语言回调函数一个简单的例子

    回调函数通俗的解释 普通函数 你所写的函数调用系统函数 你只管调用 不管实现 回调函数 系统调用你所写的函数 你只管实现 不管调用 以下是使用 语言实现回调函数的一个例子 代码 include
  • Microsoft Excel 无法插入新的单元格,因为这会将非空单元格推送到工作表的末尾...的问题解决

    这个问题的出现应该是最后一行或一列有数据 按以下步骤操作 1 选中文字表格最后一列空白列 随后按ctrl shift 向右 选中整列 点击右键删除 2 选中文字表格最后一行空白列 随后按ctrl shift 向右 选中整行 点击右键删除
  • Springboot 集成 Groovy Script 完整示例

    Springboot 集成 Groovy Script 完整示例 使用Spring Boot集成Groovy Script来实现动态规则解析和执行的Demo 以下是实现步骤 1 创建Spring Boot项目 首先 创建一个Spring B
  • 测试代码(测试函数、测试类)

    测试函数 def get name first last full name first last return full name title from name import get name print Enter q at any
  • Using a Single Business Pattern with the RUP -part3

    Using IBM Patterns for e business during inceptionKey goals of the RUP inception phase are A vision that establishes the
  • 逆向工程Python爬虫——国税局发票查验平台

    前言 这是一篇含金量很高的干货文章 笔者将手把手带领各位一步一步地实现爬取国家税务总局全国增值税发票查验平台 以下简称 查验平台 这个想法诞生在19年初 当时在做一款通过扫描二维码就可以查验发票的小程序 当时由于笔者学艺尚浅 没办法模拟请求
  • 浏览器localStorage

    Window localStorage 属性 JavaScript 存储对象 JavaScript 存储对象 实例 使用 localStorage 创建一个本地存储的 name value 对 name lastname value Smi
  • 解决jupyter notebook打开时找不到想要的文件

    原因 打开notebook默认显示的是当前目录下的文件 标题 解决办法 打开cmd用dos命令将当前目录切换到想用notebook打开的文件所在的文件夹 已经切换到了文件所在的目录 所以用命令jupyter notebook打开notebo
  • 重装pytorch历程-问题-解决

    用conda install时报错 An HTTP error occurred when trying to retrieve this URL HTTP errors are often intermittent 我要做的事 想使用to
  • 微软D365 入门文章汇总以及各项认证介绍(持续跟新.....)

    介绍 希望入门D365的同学们 需要具备的知识点 涉及C WebApi 前端知识 Power Platform等知识 以及Azure的知识点等 需要有了解 实施Microsoft Dynamics 365 CE 12章 实施Microsof
  • 多线程异常 和 事务(一)

    1 首先提出几个问题 1 1 子线程中的异常在主线程中是否可以catch 1 2 在spring中主线程有事务 那么子线程中有事务码 2 先看第一个问题 2 1 我们在main方法里面测试 代码如下 package com pingan t
  • 理解 glibc malloc:malloc() 与 free() 原理图解

    本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程 本文不过度关注细节 因此只是分别从arena层次 bin层次 chunk层次进行图解 而不涉及有关指针的具体操作 前言 Arena级分析 main arena中的内存申请 t
  • QuickLook搭配Everthing提高工作效率

    因为我的Everthing已经默认以管理员启动了 所以QuickLook也要以管理员权限启动才能查看Everthing中的文件 而QuickLook本身不能以管理员权限启动 所以需要在任务计划程序中设置 步骤 Ctrl R打开CMD 输入t
  • C++模板与泛型编程

    前言 泛型是独立于任何特定类型的编码 在C 中 我们经常使用的容器vector 该容器可以定义不同种类的vector 如vector list vector list或自定义类型等 函数模板 如果要编写一个函数来比较两个数的大小 返回其中最
  • sklearn逻辑回归参数设置_【机器学习笔记】:逻辑回归实战练习(二)

    作者 xiaoyu 微信公众号 Python数据科学 知乎 python数据分析师 前言 前几篇介绍了逻辑回归在机器学习中的重要性 5个原因告诉你 为什么在成为数据科学家之前 逻辑回归 是第一个需要学习的 以及逻辑回归的理论和公式推导 路远