Python 线性回归

Python 线性回归一个简单的例子

# -*- coding: utf-8 -*-
"""
Created on Wed Sep 20 16:46:53 2017

@author: Jackie
"""

import numpy as np
from statsmodels import regression
import statsmodels.api as sm
import matplotlib.pyplot as plt
import math

''' 编辑线性回归函数 '''
def linreg(X,Y):
    '''线性回归'''
    X = sm.add_constant(X)
    model = regression.linear_model.OLS(Y, X).fit()
    '''Y = a + bX '''
    a = model.params[0]
    b = model.params[1] 
    
    '''X[:,1] 就是取所有行的第1个数据
       X = sm.add_constant(X) 此时的X已变为
       [[ 1.          0.52630651]
       ..., 
       [ 1.          0.05758532]]'''
    X = X[:, 1] 

    '''绘图并返回信息'''
    X2 = np.linspace(X.min(), X.max(), 100) # 等差数列
    Y_hat = X2 * b + a
    plt.scatter(X, Y, alpha=0.3) # 显示原始数据 alpha是透明程度
    plt.plot(X2, Y_hat, 'r', alpha=0.9);  # 添加拟合直线
    plt.xlabel('X Value')
    plt.ylabel('Y Value')
    return model.summary()

'''创造100个随机样本X
   在X变量的基础上加随机噪声来构造变量Y'''
X = np.random.rand(100)
#Y = np.random.rand(100)
Y = X + 0.2*np.random.randn(100)
print(linreg(X, Y))


以下为程序执行结果截图:


Python 线性回归_第1张图片

Python 线性回归_第2张图片


你可能感兴趣的:(Python 线性回归)