1. 程式人生 > >python 二元Logistics Regression 回歸分析(LogisticRegression)

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

learn intercept onf 但是 art then 簡介 time HERE

綱要

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個值

技術分享圖片

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