网站搜索排优化怎么做网站备案更改网站负责人
目录
- model_selection.train_test_split函数
 - 实战
 
model_selection.train_test_split函数
model_selection.train_test_split 是 Scikit-Learn 中用于将数据集拆分为训练集和测试集的函数。这个函数非常有用,因为在机器学习中,我们通常需要将数据集分为训练集和测试集,以便在模型训练和评估中使用不同的数据集。
下面是 model_selection.train_test_split 函数的基本介绍:
model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
 
- *arrays: 这是待拆分的数据集,可以是特征矩阵和目标向量,也可以是多个特征矩阵。例如,如果有一个特征矩阵 X 和一个目标向量 y,可以使用 X, y 作为参数传入。
 - test_size: 测试集的大小,可以是浮点数(表示比例)或整数(表示样本数)。
 - train_size: 训练集的大小,和 test_size 作用相同,如果不指定则默认为 1 - test_size。
 - random_state: 随机种子,用于控制数据集的随机拆分,以便结果可重复。 shuffle: 是否在拆分数据前对数据进行洗牌。
 - stratify: 按照某个变量(通常是目标变量)进行分层抽样,以确保训练集和测试集中各类别样本的比例与原始数据集中相同。
 
举个例子,假设有一个特征矩阵 X 和一个目标向量 y,可以使用 model_selection.train_test_split 将数据集拆分为训练集和测试集:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
 
这将会把特征矩阵 X 和目标向量 y 按照 8:2 的比例拆分为训练集和测试集,并且使用随机种子 42 来确保拆分结果的可重复性。
实战
# 导入模块
from sklearn import model_selection
import statsmodels.api as sm
import numpy as np 
import pandas as pd 
from scipy.stats import f # 导入数据
Profit = pd.read_excel(r'Predict to Profit.xlsx')
# 生成由State变量衍生的哑变量
dummies = pd.get_dummies(Profit.State)
# 将哑变量与原始数据集水平合并
Profit_New = pd.concat([Profit,dummies], axis = 1)
# 删除State变量和California变量(因为State变量已被分解为哑变量,New York变量需要作为参照组)
Profit_New.drop(labels = ['State','New York'], axis = 1, inplace = True)
# 拆分数据集Profit_New
train, test = model_selection.train_test_split(Profit_New, test_size = 0.2, random_state=1234)
# 建模
model2 = sm.formula.ols('Profit~RD_Spend+Administration+Marketing_Spend+Florida+California', data = train).fit()
print('模型的偏回归系数分别为:\n', model2.params)模型的偏回归系数分别为:Intercept             58068.048193
Florida[T.True]        1440.862734 
California[T.True]      513.468310 
RD_Spend                  0.803487 
Administration           -0.057792 
Marketing_Spend           0.013779 
dtype: float64
