Python 에서 실 현 된 선형 회귀 알고리즘 예시[csv 파일 다운로드 첨부]
python 으로 선형 회귀 실현
Using Python to Implement Line Regression Algorithm
반찬 새 기록 학습 과정
코드:
#encoding:utf-8
"""
Author: njulpy
Version: 1.0
Data: 2018/04/09
Project: Using Python to Implement LineRegression Algorithm
"""
import numpy as np
import pandas as pd
from numpy.linalg import inv
from numpy import dot
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn import linear_model
#
def lms(x_train,y_train,x_test):
theta_n = dot(dot(inv(dot(x_train.T, x_train)), x_train.T), y_train) # theta = (X'X)^(-1)X'Y
#print(theta_n)
y_pre = dot(x_test,theta_n)
mse = np.average((y_test-y_pre)**2)
#print(len(y_pre))
#print(mse)
return theta_n,y_pre,mse
#
def train(x_train, y_train, num, alpha,m, n):
beta = np.ones(n)
for i in range(num):
h = np.dot(x_train, beta) #
error = h - y_train.T #
delt = 2*alpha * np.dot(error, x_train)/m #
beta = beta - delt
#print('error', error)
return beta
if __name__ == "__main__":
iris = pd.read_csv('iris.csv')
iris['Bias'] = float(1)
x = iris[['Sepal.Width', 'Petal.Length', 'Petal.Width', 'Bias']]
y = iris['Sepal.Length']
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=5)
t = np.arange(len(x_test))
m, n = np.shape(x_train)
# Leastsquare
theta_n, y_pre, mse = lms(x_train, y_train, x_test)
# plt.plot(t, y_test, label='Test')
# plt.plot(t, y_pre, label='Predict')
# plt.show()
# GradientDescent
beta = train(x_train, y_train, 1000, 0.001, m, n)
y_predict = np.dot(x_test, beta.T)
# plt.plot(t, y_predict)
# plt.plot(t, y_test)
# plt.show()
# sklearn
regr = linear_model.LinearRegression()
regr.fit(x_train, y_train)
y_p = regr.predict(x_test)
print(regr.coef_,theta_n,beta)
l1,=plt.plot(t, y_predict)
l2,=plt.plot(t, y_p)
l3,=plt.plot(t, y_pre)
l4,=plt.plot(t, y_test)
plt.legend(handles=[l1, l2,l3,l4 ], labels=['GradientDescent', 'sklearn','Leastsquare','True'], loc='best')
plt.show()
출력 결과sklearn: [ 0.65368836 0.70955523 -0.54193454 0. ]
LeastSquare: [ 0.65368836 0.70955523 -0.54193454 1.84603897]
GradientDescent: [ 0.98359285 0.29325906 0.60084232 1.006859 ]
첨부:상기 예시 중의 iris.csv 파일여 기 를 클릭 하여 본 사이트 다운로드
Python 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.