《封号码罗》数据分析与人工智能之sklearn模型LogisticRegression逻辑斯蒂回归(十三)

第一部分

# logistics逻辑斯蒂回归
import numpy as np
from sklearn.linear_model import LogisticRegression

# 逻辑斯蒂回归在线性模快下面
# 相同点:
#   线性回归---------得到线性方程
#   逻辑斯蒂回归-----得到线性方程
# 不同点:
#   线性回归解决回归预测问题
#   逻辑斯蒂回归解决分裂问题
# 所有分裂问题都是概率问题
# 线性方程----使用逻辑斯蒂函数------值变成概率0~1---分类问题
# 利用逻辑斯蒂回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式
# (f(x1, x2....) = w1 * 1 + w2 * 2 +...),以此进行分类,这里的“回归”一词源于最佳拟合。
# 表示要找到最佳拟合参数集
# 最大似然估计就是要求得时l(θ)取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数

import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split

iris = datasets.load_iris()  # 安德森鸢尾花卉数据集
X = iris["data"]
y = iris["target"]
# print(X.shape)  # (150, 4) 150个样本,四个属性分别是花萼的长宽,花瓣的长宽
X_train, X_test, y_train, y_test = train_test_split(X, y)

# class_weight的使用,假如有两个类:类别A(100数据),类别B(200数据) class_weight={A:2,B:1}
#                       惩罚L2正则项             容忍度     相当于α,正则化的强度,越大正则项越弱
lg = LogisticRegression(penalty='l2', dual=False, tol=1e-4, C=1.0,
                        # 截距                缩放(正则化的意思)  权重
                        fit_intercept=True, intercept_scaling=1, class_weight=None,
                        #                   优化方法
                        random_state=None, solver='lbfgs', max_iter=100,
                        # 是否解决多分类问题
                        multi_class='auto', verbose=0, warm_start=False, n_jobs=None,
                        l1_ratio=None)
lg.fit(X_train, y_train)
y_ = lg.predict(X_test)
ss = lg.score(X_test, y_test)
gailv = lg.predict_proba(X_test)  # 概率 谁的概率大谁就是哪个值
canshu = lg.coef_  # 斜率  3行4列  12个
jieju = lg.intercept_  # [  9.03673323   1.72533767 -10.7620709 ]

cond = y != 2  # 三分类变成二分类
X = X[cond]
y = y[cond]
lg.fit(X, y)
# lg.coef_  [[ 0.44036482 -0.90696813  2.30849566  0.96232763]]
# lg.intercept_ [-6.61165119]
print()

第二部分

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了30 篇原创文章 · 获赞 5 · 访问量 3311

猜你喜欢

转载自blog.csdn.net/Python_DJ/article/details/104588588