python 二元Logistics Regression 回归分析(LogisticRegression)

纲要

boss说增加项目平台分析方法:

T检验(独立样本T检验)、线性回归、二元Logistics回归、因子分析、可靠性分析

根本不懂,一脸懵逼状态,分析部确实有人才,反正我是一脸懵

首先解释什么是二元Logistic回归分析吧

二元Logistics回归 可以用来做分类,回归更多的是用于预测

官方简介:

链接:https://pythonfordatascience.org/logistic-regression-python/

Logistic regression models are used to analyze the relationship between a dependent variable (DV) and independent variable(s) (IV) when the DV is dichotomous. The DV is the outcome variable, a.k.a. the predicted variable, and the IV(s) are the variables that are believed to have an influence on the outcome, a.k.a. predictor variables. If the model contains 1 IV, then it is a simple logistic regression model, and if the model contains 2+ IVs, then it is a multiple logistic regression model.

Assumptions for logistic regression models:

The DV is categorical (binary)
If there are more than 2 categories in terms of types of outcome, a multinomial logistic regression should be used
Independence of observations
Cannot be a repeated measures design, i.e. collecting outcomes at two different time points.
Independent variables are linearly related to the log odds
Absence of multicollinearity
Lack of outliers

原文

理解了什么是二元以后,开始找库

需要用的包

这里需要特别说一下,第一天晚上我就用的logit,但结果不对,然后用机器学习搞,发现结果还不对,用spss比对的值

奇怪,最后没办法,只能抱大腿了,因为他们纠结Logit和Logistic的区别,然后有在群里问了下,有大佬给解惑了

而且也有下面文章给解惑

1. 是 statsmodels 的logit模块

2. 是 sklearn.linear_model 的 LogisticRegression模块

先说第一种方法

首先借鉴文章链接:https://blog.csdn.net/zj360202/article/details/78688070?utm_source=blogxgwz0

解释的比较清楚,但是一定要注意一点就是,截距项,我就是在这个地方出的问题,因为我觉得不重要,就没加

#!/usr/bin/env
# -*- coding:utf-8 -*-

import pandas as pd
import statsmodels.api as sm
import pylab as pl
import numpy as np
from pandas import DataFrame, Series
from sklearn.cross_validation import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
from collections import OrderedDict

data = {
    ‘y‘: [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1],
    ‘x‘: [i for i in range(1, 21)],
}

df = DataFrame(OrderedDict(data))

df["intercept"] = 1.0  # 截距项,很重要的呦,我就错在这里了

print(df)
print("==================")
print(len(df))
print(df.columns.values)

print(df[df.columns[1:]])

logit = sm.Logit(df[‘y‘],  df[df.columns[1:]])
#
result = logit.fit()
#
res = result.summary2()

print(res)

第二种方法,机器学习

参考链接:https://zhuanlan.zhihu.com/p/34217858

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from collections import OrderedDict
import pandas as pd

examDict = {
    ‘学习时间‘: [i for i in range(1, 20)],
    ‘通过考试‘: [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1]
}

examOrderDict = OrderedDict(examDict)
examDF = pd.DataFrame(examOrderDict)
# print(examDF.head())

exam_X = examDF.loc[:, "学习时间"]
exam_Y = examDF.loc[:, "通过考试"]

print(exam_X)
# print(exam_Y)

from sklearn.cross_validation import train_test_split

X_train,X_test,y_train, y_test = train_test_split(exam_X,exam_Y, train_size=0.8)

# print(X_train.values)
print(len(X_train.values))
X_train = X_train.values.reshape(-1, 1)
print(len(X_train))
print(X_train)
X_test = X_test.values.reshape(-1, 1)

from sklearn.linear_model import LogisticRegression

module_1 = LogisticRegression()
module_1.fit(X_train, y_train)

print("coef:", module_1.coef_)

front = module_1.score(X_test,y_test)
print(front)

print("coef:", module_1.coef_)
print("intercept_:", module_1.intercept_)

# 预测
pred1 = module_1.predict_proba(3)
print("预测概率[N/Y]", pred1)

pred2 = module_1.predict(5)
print(pred2)

但是,机器学习的这个有问题,就是只抽取了15个值

原文地址:https://www.cnblogs.com/renfanzi/p/9850702.html

时间: 2024-10-08 18:18:31

python 二元Logistics Regression 回归分析(LogisticRegression)的相关文章

用SPSS做二元logistics回归做预测

在做logistics回归之前,我们要先对你要做预测的变量做个相关分析,找出和你因变量相关的自变量.我这里就不做了,直接用我处理之后的数据. 打开我们要分析的数据,单击“分析”,选择“回归”,然后选择“二元Logistics回归”,弹出下面的界面,如图: 把是否购买移到因变量框里面去,把消费金额和消费数量移动到协变量框里面去,然后单击“保存”按钮,弹出“Logistics回归:保存”界面,选择“预测值”下面的“概率”,之后咋爱单击浏览按钮,把模型保存到你想保存的位子,完成之后单击“继续”,回到刚

1.1、Logistics Regression算法实践

 1.1.Logistics Regression算法实践 有了上篇博客的理论准备后,接下来,我们用以及完成的函数,构建Logistics Regression分类器.我们利用线性可分的数据作为训练样本来训练.在构建模型的过程中,主要有两个步骤:(1)利用训练样本训练模型,(2)利用训练好的模型对新样本进行预测. 1.1.1 原文地址:https://www.cnblogs.com/wanshuai/p/9099772.html

以German信用数据为例的logistics regression算法在评分卡上的实践

以德国信用数据为例,用logistict regression算法做信用评分卡原理性实现,因此并未考虑feature selection. 第一步:导入必要的库 import pandas as pd import numpy as np from sklearn.cross_validation import train_test_split 第二步:导入数据 german = pd.read_csv('D:/CreditDatasets/german.data', sep=' ', head

python之简单线性回归分析

使用sklearn库的linear_model.LinearRegression(),可以非常简单的进行线性回归分析 以下为代码: 1 # 导入sklearn库下的linear_model类 2 from sklearn import linear_model 3 # 导入pandas库,别名为pd 4 import pandas as pd 5 6 filename = r'D:\test.xlsx' 7 # 读取数据文件 8 data = pd.read_excel(filename) 9

Python 线性回归(Linear Regression) - 到底什么是 regression?

背景 学习 Linear Regression in Python – Real Python,对 regression 一词比较疑惑. 这个 linear Regression 中的 Regression 是什么意思,字面上 Regression 是衰退的意思,线性衰退?相信理解了这个词,对线性回归可能印象深刻些. Regression 到底是什么意思 搜了一番,原来是为了纪念生物统计学家高尔顿的发现,他是达尔文的表兄,一直想从进化论来研究为何人各有不同. 他的一个重大发现是,父母的身高与子女

机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho

机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho 总述 本书是 2014 的,看完以后才发现有第二版的更新,2016.建议阅读最新版,有能力的建议阅读英文版,中文翻译有些地方比较别扭(但英文版的书确实是有些贵). 我读书的目的:泛读主要是想窥视他人思考的方式. 作者写书的目标:面向初学者,但有时间看看也不错.作者说"我希望它能激发你的好奇心,并足以让你保持渴望,不断探索

机器学习基石(10)--Logistic Regression

如果我们想要知道的并不是绝对的是或者非,我们只想知道在是非发生的概率(只想知道概率,不想知道结果)是多少的时候: 虽然我们想要知道左边的完美数据,但是在实际生活中,我们只有右边的数据,也就是一些确定的结果,不可能有概率值这个事情让我们知道.而右边的数据可以看成是有噪声的不完美的数据. 怎么解决这样的问题呢? 有一种叫做sigmoid的函数可以满足这些要求. 这个函数(logistic function)可以把任何数转化成0到1之间的值.那么logistics regression的Ein怎么衡量

Spark2.x+Python大数据机器学习视频课程

Spark2.x+Python大数据机器学习视频课程下载地址:https://pan.baidu.com/s/1imjFFStyjbRqyMtnboPgpQ 提取码: 32pb 本课程系统讲解如何在Spark2.0上高效运用Python来处理数据并建立机器学习模型,帮助读者开发并部署高效可拓展的实时Spark解决方案. 第一章.搭建Spark 2.x+Python开发环境及基本开发入门 1.快速环境搭建:导入Windows7虚拟机至VMWARE及启动系统和远程桌面连接2.快速环境搭建:Windo

Python之逻辑回归模型来预测

建立一个逻辑回归模型来预测一个学生是否被录取. import numpy as np import pandas as pd import matplotlib.pyplot as plt import os path='data'+os.sep+'Logireg_data.txt' pdData=pd.read_csv(path,header=None,names=['Exam1','Exam2','Admitted']) pdData.head() print(pdData.head())