Python数学建模StatsModels统计回归模型数据的准备
在进行StatsModels统计回归分析时,需要对数据进行准备和处理。本文将介绍如何使用Python进行数据的准备与处理。
数据准备
在进行统计分析前,需要进行数据的收集和处理。数据的处理主要包括以下几个方面:
数据清理
数据清理是指对数据的缺失值、异常值、重复值等进行处理,使得数据整体更加准确、规范。在Python中,使用pandas
库可以方便地对数据进行清理。具体操作步骤如下:
- 导入数据,使用
pandas
库的read_csv
函数读取数据文件。
import pandas as pd
data = pd.read_csv('data.csv')
- 处理缺失值。可以使用
pandas
库的fillna
函数将缺失值用指定的数值进行填充,也可以使用dropna
函数将缺失值所在的行或列删除。
# 使用指定数值填充缺失值
data.fillna(0, inplace=True)
# 删除缺失值所在的行
data.dropna(axis=0, inplace=True)
- 处理异常值。可以使用
pandas
库的条件判断语句,将超出指定范围的值替换掉。
# 将超出指定范围的值替换成指定数值
data.loc[data['age']>100, 'age'] = 100
- 处理重复值。可以使用
pandas
库的drop_duplicates
函数,删除数据中重复的行。
# 删除重复的行
data.drop_duplicates(inplace=True)
特征工程
特征工程是指通过对原始数据进行处理和提取,从中提取出对目标变量影响最大的特征,以提高模型的预测能力。在Python中,可以使用scikit-learn
库的preprocessing
模块进行特征工程。具体操作步骤如下:
- 特征选择。可以使用
SelectKBest
函数来选择对目标变量影响最大的K个特征。
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_regression
X = data.drop(['target'], axis=1) # 去掉目标变量列
y = data['target']
selector = SelectKBest(f_regression, k=3) # 选择对目标变量影响最大的3个特征
X_new = selector.fit_transform(X, y)
- 特征缩放。可以使用
MinMaxScaler
函数将特征缩放到指定范围内。
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1)) # 将特征缩放到0-1范围内
X_scaled = scaler.fit_transform(X)
数据建模
在进行数据建模前,需要先将数据分为训练集和测试集。可以使用train_test_split
函数来进行数据集的划分。接着,使用StatsModels
库来进行统计回归模型的建立。
from sklearn.model_selection import train_test_split
import statsmodels.api as sm
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 使用OLS进行统计回归模型的建立
model = sm.OLS(y_train, X_train).fit()
示例说明
示例1
假设我们想要预测某地区的GDP,现在我们有一份包含该地区10年内的GDP数据和人口数据的Excel表格。具体操作步骤如下:
- 首先,我们需要使用
pandas
库的read_csv
函数读取Excel表格。
import pandas as pd
data = pd.read_excel('data.xlsx')
- 下一步,我们需要进行数据清理。在这个例子中,我们发现数据中有一些缺失值,可以使用
fillna
函数将缺失值设置为该列的中位数。
data.fillna(data.median(), inplace=True)
- 接下来,我们进行特征工程。在这个例子中,我们发现人口数据会对GDP有影响,因此我们需要将人口数据作为特征加入模型中。
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1)) # 将特征缩放到0-1范围内
X = data[['population']]
X_scaled = scaler.fit_transform(X)
y = data['GDP']
- 最后,我们进行数据建模。我们将数据划分为训练集和测试集,并使用OLS进行统计回归模型的建立。接着,我们可以使用模型对测试集的GDP数据进行预测,计算预测准确率。
from sklearn.model_selection import train_test_split
import statsmodels.api as sm
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
model = sm.OLS(y_train, sm.add_constant(X_train)).fit()
y_pred = model.predict(sm.add_constant(X_test))
accuracy = (y_pred == y_test).sum() / len(y_test)
print("Accuracy:", accuracy)
示例2
假设我们想要预测某地区的房价,现在我们有一份包含该地区10年内的房价数据和各种房屋特征数据的CSV文件。具体操作步骤如下:
- 首先,我们需要使用
pandas
库的read_csv
函数读取CSV文件。
import pandas as pd
data = pd.read_csv('data.csv')
- 下一步,我们需要进行数据清理。在这个例子中,我们需要将一些特征中的文本转换为数值,可以使用
replace
函数进行转换。
data.replace({'yes': 1, 'no': 0}, inplace=True)
- 接下来,我们进行特征工程。在这个例子中,我们发现房屋面积、楼层数、是否有游泳池等特征都会对房价有影响,因此我们需要将这些特征作为特征加入模型中。
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler(feature_range=(0, 1)) # 将特征缩放到0-1范围内
X = data[['area', 'stories', 'pool']]
X_scaled = scaler.fit_transform(X)
y = data['price']
- 最后,我们进行数据建模。我们将数据划分为训练集和测试集,并使用OLS进行统计回归模型的建立。接着,我们可以使用模型对测试集的房价数据进行预测,计算预测准确率。
from sklearn.model_selection import train_test_split
import statsmodels.api as sm
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.3, random_state=42)
model = sm.OLS(y_train, sm.add_constant(X_train)).fit()
y_pred = model.predict(sm.add_constant(X_test))
accuracy = (y_pred == y_test).sum() / len(y_test)
print("Accuracy:", accuracy)
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python数学建模StatsModels统计回归模型数据的准备 - Python技术站