linear_model
模块下,不同的算法又会分化为很多类,但它们都是经过几种基本算法调整和组合而成,因此基本上都是大同小异,换汤不换药,下面介绍经常用到回归类算法,其中就包含了 Logistic 回归算法。在这之前我们需要先熟悉几个概念,比如“正则化”。
注意:此时两个绝度值符号,是符合范数规定的,两个绝对值符号表示范数。
注意,线性回归函数的 1/n 在优化过程的运算中不会影响结果,它只是一个常量而已,而常量的导数是 0。
from sklearn.linear_model import LogisticRegressionsklearn 库中自带了许多种类的内建数据集,比如波士顿房价数据集,手写数字识别数据集,鸢尾花数据集,糖尿病数据集等,这些数据集对我们学习机器学习算法提供了很好的帮助,节省了我们收集、整理数据集的时间。下面我们以鸢尾花数据集对 Logistic 回归算法进行简单的应用。
#logistic算法 #从 scikit-learn库导入线性模型中的logistic回归算法 from sklearn.linear_model import LogisticRegression #导入sklearn 中的自带数据集 鸢尾花数据集 from sklearn.datasets import load_iris # skleran 提供的分割数据集的方法 from sklearn.model_selection import train_test_split #载入鸢尾花数据集 iris_dataset=load_iris() # data 数组的每一行对应一朵花,列代表每朵花的四个测量数据,分别是:花瓣的长度,宽度,花萼的长度、宽度 print("data数组类型: {}".format(type(iris_dataset['data']))) # 前五朵花的数据 print("前五朵花数据:\n{}".format(iris_dataset['data'][:5])) #分割数据集训练集,测试集 X_train,X_test,Y_train,Y_test=train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0) #训练模型 #设置最大迭代次数为3000,默认为1000.不更改会出现警告提示 log_reg = LogisticRegression(max_iter=3000) #给模型喂入数据 clm=log_reg.fit(X_train,Y_train) #使用模型对测试集分类预测,并打印分类结果 print(clm.predict(X_test)) #最后使用性能评估器,测试模型优良,用测试集对模型进行评分 print(clm.score(X_test,Y_test))输出结果如下:
data 数组类型: <class 'numpy.ndarray'> 前五朵花数据: [[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2] [4.6 3.1 1.5 0.2] [5. 3.6 1.4 0.2]] 测试集划分结果: [2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0 2] 模型评分: 0.9736842105263158scikit-learn 中的 train_test_split 函数可以打乱数据集,并对其进行拆分。该函数默认将 75% 的行数据及对应标签作为训练集,另外 25% 数据作为测试集。
注意:75% 和 25% 这两个数值可以根据实际的情况做相应的调整。
最后,我们对 Logistic 算法做一下简单总结:首先 Logistic 算法适用于分类问题,该算法在处理二分类问题上表现优越,但在多分类(二个以上)问题上容易出现欠拟合。Logistic 算法除了适用于回归分类问题,还可以作为神经网络算法的激活函数(即 Sigmoid 函数)。
本文链接:http://task.lmcjl.com/news/16058.html