python线性回归回归缺失值忽略_使⽤Python的线性回归问
题,怎么解决
展开全部
本⽂中,我们将进⾏⼤量的编e69da5e6ba9062616964757a686964616f31333363393662程——但在这之前,我们先介绍⼀下我们今天要解决的实例问题。
1) 预测房⼦价格
我们想预测特定房⼦的价值,预测依据是房屋⾯积。
2) 预测下周哪个电视节⽬会有更多的观众
闪电侠和绿箭侠是我最喜欢的电视节⽬。我想看看下周哪个节⽬会有更多的观众。
3) 替换数据集中的缺失值
我们经常要和带有缺失值的数据集打交道。这部分没有实战例⼦,不过我会教你怎么去⽤线性回归替换这些值。
所以,让我们投⼊编程吧(马上)
在动⼿之前,去把我以前的⽂章(Python Packages for Data Mining)中的程序包安装了是个好主意。
1) 预测房⼦价格
我们有下⾯的数据集:
输⼊编号
平⽅英尺
价格
1 150 6450
2 200 7450
3 250 8450
4 300 9450
5 350 11450
6 400 15450
7 600 18450
步骤:
在线性回归中,我们都知道必须在数据中出⼀种线性关系,以使我们可以得到θ0和θ1。 我们的假设⽅程式如下所⽰:
其中: hθ(x)是关于特定平⽅英尺的价格值(我们要预测的值),(意思是价格是平⽅英尺的线性函数); θ0是⼀个常数; θ1是回归系数。
那么现在开始编程:
步骤1
打开你最喜爱的⽂本编辑器,并命名为predict_house_price.py。 我们在我们的程序中要⽤到下⾯的包,所以把下⾯代码复制到
predict_house_price.py⽂件中去。
Python
1
2
3
4
5
# Required Packages
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn import datasets, linear_model
运⾏⼀下你的代码。如果你的程序没错,那步骤1基本做完了。如果你遇到了某些错误,这意味着你丢失了⼀些包,所以回头去看看包的页⾯。 安装博客⽂章中所有的包,再次运⾏你的代码。这次希望你不会遇到任何问题。
现在你的程序没错了,我们继续……
步骤2
我把数据存储成⼀个.csv⽂件,名字为input_data.csv 所以让我们写⼀个函数把数据转换为X值(平⽅英尺)、Y值(价格)
Python
1
2
3
4
5
6
7
8
9
# Function to get data
def get_data(file_name):
data = pd.read_csv(file_name)
X_parameter = []
Y_parameter = []
for single_square_feet ,single_price_value in zip(data['square_feet'],data['price']):
X_parameter.append([float(single_square_feet)])
Y_parameter.append(float(single_price_value))
return X_parameter,Y_parameter
第3⾏:将.csv数据读⼊Pandas数据帧。
第6-9⾏:把Pandas数据帧转换为X_parameter和Y_parameter数据,并返回他们。
所以,让我们把X_parameter和Y_parameter打印出来:
Python
1
2
3
[[150.0], [200.0], [250.0], [300.0], [350.0], [400.0], [600.0]]
[6450.0, 7450.0, 8450.0, 9450.0, 11450.0, 15450.0, 18450.0]
[Finished in 0.7s]
脚本输出: [[150.0], [200.0], [250.0], [300.0], [350.0], [400.0], [600.0]] [6450.0, 7450.0, 8450.0, 9450.0, 11450.0, 15450.0, 18450.0] [Finished in 0.7s]
步骤3
现在让我们把X_parameter和Y_parameter拟合为线性回归模型。我们要写⼀个函数,输⼊为X_parameters、Y_parameter和你要预测的平⽅英尺值,返回θ0、θ1和预测出的价格值。
Python
1
2
3
4
5
6
7
8
function怎么记忆9
10
11
12
# Function for Fitting our data to Linear model
def linear_model_main(X_parameters,Y_parameters,predict_value):
# Create linear regression object
regr = linear_model.LinearRegression()
regr.fit(X_parameters, Y_parameters)
predict_outcome = regr.predict(predict_value)
predictions = {}
predictions['intercept'] = regr.intercept_
predictions['coefficient'] = f_
predictions['predicted_value'] = predict_outcome
return predictions
第5-6⾏:⾸先,创建⼀个线性模型,⽤我们的X_parameters和Y_parameter训练它。
第8-12⾏:我们创建⼀个名称为predictions的字典,存着θ0、θ1和预测值,并返回predictions字典为输出。
所以让我们调⽤⼀下我们的函数,要预测的平⽅英尺值为700。
Python
1
2
3
4
5
6
X,Y = get_data('input_data.csv')
predictvalue = 700
result = linear_model_main(X,Y,predictvalue)
print "Intercept value " , result['intercept']
print "coefficient" , result['coefficient']
print "Predicted value: ",result['predicted_value']
脚本输出:Intercept value 1771.80851064 coefficient [ 28.77659574] Predicted value: [ 21915.42553191] [Finished in 0.7s]
这⾥,Intercept value(截距值)就是θ0的值,coefficient value(系数)就是θ1的值。 我们得到预测的价格值为21915.4255——意味着我们已经把预测房⼦价格的⼯作做完了!
为了验证,我们需要看看我们的数据怎么拟合线性回归。所以我们需要写⼀个函数,输⼊为X_parameters和Y_parameters,显⽰出数据拟合的直线。
Python
1
2
3
4
5
6
7
8
9
10
# Function to show the resutls of linear fit model
def show_linear_line(X_parameters,Y_parameters):
# Create linear regression object
regr = linear_model.LinearRegression()
regr.fit(X_parameters, Y_parameters)
plt.scatter(X_parameters,Y_parameters,color='blue')
plt.plot(X_parameters,regr.predict(X_parameters),color='red',linewidth=4)
plt.show()
那么调⽤⼀下show_linear_line函数吧:
Python
1
show_linear_line(X,Y)
脚本输出:
2)预测下周哪个电视节⽬会有更多的观众
闪电侠是⼀部由剧作家/制⽚⼈Greg Berlanti、Andrew Kreisberg和Geoff Johns创作,由CW电视台播放的美国电视连续剧。它基于DC 漫画⾓⾊闪电侠(Barry Allen),⼀个具有超⼈速度移动能⼒的装扮奇特的打击犯罪的超级英雄,这个⾓⾊是由Robert Kanigher、John Broome和Carmine Infantino创作。它是绿箭侠的衍⽣作品,存在于同⼀世界。该剧集的试播篇由Berlanti、Kreisberg和Johns写
作,David Nutter执导。该剧集于2014年10⽉7⽇在北美⾸映,成为CW电视台收视率最⾼的电视节⽬。
绿箭侠是⼀部由剧作家/制⽚⼈ Greg Berlanti、Marc Guggenheim和Andrew Kreisberg创作的电视连续剧。它基于DC漫画⾓⾊绿箭侠,⼀个由Mort Weisinger和George Papp创作的装扮奇特的犯罪打击战⼠。它于2012年10⽉10⽇在北美⾸映,与2012年末开始全球播出。主要拍摄于Vancouver、British Columbia、Canada,该系列讲述了亿万花花公⼦Oliver Queen,由Stephen Amell扮演,被困在敌⼈的岛屿上五年之后,回到家乡打击犯罪和腐败,成为⼀名武器是⼸箭的神秘义务警员。不像漫画书中,Queen最初没有使⽤化名”绿箭侠“。
由于这两个节⽬并列为我最喜爱的电视节⽬头衔,我⼀直想知道哪个节⽬更受其他⼈欢迎——谁会最终赢得这场收视率之战。 所以让我们写⼀个程序来预测哪个电视节⽬会有更多观众。 我们需要⼀个数据集,给出每⼀集的观众。幸运地,我从上得到了这个数据,并整理成⼀个.csv⽂件。它如下所⽰。
闪电侠
闪电侠美国观众数
绿箭侠
绿箭侠美国观众数
1 4.83 1 2.84
2 4.27 2 2.32
3 3.59 3 2.55
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论