python 二元Logistics Regression 回歸分析(LogisticRegression)
阿新 • • 發佈:2018-10-25
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 isa 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)