在这篇文章中,将探讨如何使用多变量线性回归模型来预测初创企业的利润。多变量线性回归是一种机器学习算法,它允许为单一因变量提供多个自变量。与传统的线性回归不同,后者只需要一个自变量作为输入。通过本文,将了解多变量线性回归的公式,通过一个实际的例子学习如何实现它,并了解其在机器学习中的重要性。最终,将掌握这种基本的统计技术及其在数据分析中的应用。
首先,需要导入一些Python库来帮助进行数据分析和模型训练。这些库包括NumPy、Pandas、Scikit-learn等,它们将用于数据处理、模型训练和评估以及结果可视化。
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
使用train_test_split
来分割数据集,LinearRegression
作为要使用的模型,r2_score
用于评估模型的准确性,而matplotlib
和seaborn
则用于数据可视化。
接下来,将导入数据集。可以通过提供的链接下载数据集,并使用Pandas的read_csv
函数将其导入。
startup_df=pd.read_csv(r'50_Startups.csv')
print(startup_df.head())
查看数据集的形状,以了解数据集中的行数和列数。
shape=startup_df.shape
print("数据集包含 {} 行和 {} 列".format(shape[0],shape[1]))
数据集包含50行和5列。查看数据集中的所有列,可以看到包含研发支出、行政支出、市场支出、州和利润等字段。
在这一步,需要定义模型的输入和输出特征。X代表自变量,即数据集中的独立值,而Y代表因变量,即模型要预测的结果。
x=startup_df.iloc[:,:4]
y=startup_df.iloc[:,4]
执行独热编码是处理数据集中分类值的一种方法。在数据集中,州是一个分类字段,因此需要使用独热编码将其转换。
from sklearn.preprocessing import OneHotEncoder
ohe=OneHotEncoder(sparse=False)
x=ohe.fit_transform(startup_df[['State']])
使用列转换器可以方便地对指定列进行转换。
from sklearn.compose import make_column_transformer
col_trans=make_column_transformer(
(OneHotEncoder(handle_unknown='ignore'),['State']),
remainder='passthrough')
x=col_trans.fit_transform(x)
现在,将数据集分割为训练集和测试集,通常按照80%训练集和20%测试集的比例进行分割。
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)
训练模型时,使用线性回归模型,并使用训练集对其进行训练。
linreg=LinearRegression()
linreg.fit(x_train,y_train)
使用预测方法对测试集的结果进行预测。
y_pred=linreg.predict(x_test)
评估模型时,使用r2_score
作为评估指标。
Accuracy=r2_score(y_test,y_pred)*100
print("模型的准确性为 %.2f%%" %Accuracy)
plt.scatter(y_test,y_pred);
plt.xlabel('实际值');
plt.ylabel('预测值');
pred_df=pd.DataFrame({'实际值':y_test,'预测值':y_pred,'差异':y_test-y_pred})