Как получить значение F, R Square, используя LinearRegression? - PullRequest
0 голосов
/ 18 октября 2018

Я использую этот код для LinearRegression с sklearn.

from sklearn.linear_model import LinearRegression
import pandas as pd

def calculate_Intercept_X_Variable():
    list_a=[['2018', '3', 'aa', 'aa', 93,1884.7746222667, 165.36153386251098], ['2018', '3', 'bb', 'bb', 62, 665.6392779848, 125.30386609565328], ['2018', '3', 'cc', 'cc', 89, 580.2259903521, 160.19280253775514]]
    df = pd.DataFrame(list_a)
    X = df.iloc[:, 5]
    y = df.iloc[:, 6]
    X = X.values.reshape(-1, 1)
    y = y.values.reshape(-1, 1)
    clf = LinearRegression()
    clf.fit(X, y)
    para_Intercept = clf.intercept_[0] #133.10871357512195
    para_X_Variable_1 = clf.coef_[0][0] #0.016460552337949654
    para_Significance_F=""
    para_R_Square=""

calculate_Intercept_X_Variable()

. Если я использую Excel, я использую регрессионный анализ с этими данными:

X           Y 
1884.774622 165.3615339
665.639278  125.3038661
580.2259904 160.1928025

enter image description here

Excel создаст для меня такие данные: enter image description here

Я хочу использовать LinearRegression, чтобы получить Significance F,R Square эти 2 параметра, нравится Excel, я выделил зеленую часть.

Мой код прямо сейчас?

Как мне получить Significance F, R Square эти 2 параметра?

1 Ответ

0 голосов
/ 26 октября 2018

Теперь я знаю, как это сделать.Вот код:

from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np
from scipy.stats import linregress

def calculate_Intercept_X_Variable():
    list_a=[['2018', '3', 'aa', 'aa', 93,1884.7746222667, 165.36153386251098], ['2018', '3', 'bb', 'bb', 62, 665.6392779848, 125.30386609565328], ['2018', '3', 'cc', 'cc', 89, 580.2259903521, 160.19280253775514]]
    df = pd.DataFrame(list_a)
    X = df.iloc[:, 5]
    y = df.iloc[:, 6]
    X1 = X.values.reshape(-1, 1)
    y1 = y.values.reshape(-1, 1)
    clf = LinearRegression()
    clf.fit(X1, y1)
    yhat = clf.predict(X1)
    para_Intercept = clf.intercept_[0]
    para_X_Variable_1 = clf.coef_[0][0]
    SS_Residual = sum((y1 - yhat) ** 2)
    SS_Total = sum((y1 - np.mean(y1)) ** 2)
    para_R_Square = 1 - (float(SS_Residual)) / SS_Total
    adjusted_r_squared = 1 - (1 - para_R_Square) * (len(y1) - 1) / (len(y1) - X1.shape[1] - 1)
    #para_a = linregress(X, y)
    para_a = linregress(X.astype(float), y)
    para_Significance_F = para_a[3]
    print("Intercept:"+str(para_Intercept))
    print("X_Variable_1:"+str(para_X_Variable_1))
    print("R_Square:" + str(para_R_Square[0]))
    print("Significance_F:" + str(para_Significance_F))



calculate_Intercept_X_Variable()

Выход:

Перехват: 133.10871357512195

X_Variable_1: 0,016460552337949654

R_Square: 0,3039426453800934 **

Значение_F: 0,6282563718649847

...