试图理解 ML 上的示例脚本

Posted

技术标签:

【中文标题】试图理解 ML 上的示例脚本【英文标题】:Trying to understand an example script on ML 【发布时间】:2021-01-16 12:59:20 【问题描述】:

我正在尝试通过机器学习的示例脚本:Common pitfalls in interpretation of coefficients of linear models,但我无法理解其中的一些步骤。脚本的开头如下所示:

import numpy as np
import scipy as sp
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.datasets import fetch_openml

survey = fetch_openml(data_id=534, as_frame=True)

# We identify features `X` and targets `y`: the column WAGE is our
# target variable (i.e., the variable which we want to predict).
X = survey.data[survey.feature_names]
X.describe(include="all")

X.head()

# Our target for prediction is the wage.
y = survey.target.values.ravel()
survey.target.head()

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

train_dataset = X_train.copy()
train_dataset.insert(0, "WAGE", y_train)
_ = sns.pairplot(train_dataset, kind='reg', diag_kind='kde')

我的问题出在线条上

y = survey.target.values.ravel()
survey.target.head()

如果我们在这些行之后立即检查survey.target.head(),输出是

Out[36]: 
0    5.10
1    4.95
2    6.67
3    4.00
4    7.50
Name: WAGE, dtype: float64

模型如何知道WAGE 是目标变量?不是必须显式声明吗?

【问题讨论】:

看一下调查的结构。它是 Pandas 数据框或以数据为属性的对象。 是的,它实际上是用y = survey.target.values.ravel() 明确声明的。变量 y 通常用作目标的符号。 是的,我理解变量y,但它在哪里指定WAGES 作为目标变量?我想我误解了survey.target.values.ravel() 位。当我对自己的数据使用该方法时,如何指定目标是什么变量? 【参考方案1】:

survey.target.values.ravel() 行是为了展平数组,但在本例中它不是必需的。 survey.target 是一个 pd 系列(即 1 列数据框),survey.target.values 是一个 numpy 数组。您可以将两者都用于训练/测试拆分,因为 survey.target 中只有 1 列。

type(survey.target)
pandas.core.series.Series

type(survey.target.values)
numpy.ndarray

如果我们只使用survey.target,你可以看到回归会起作用:

y = survey.target

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

train_dataset = X_train.copy()
train_dataset.insert(0, "WAGE", y_train)
sns.pairplot(train_dataset, kind='reg', diag_kind='kde')

如果您有另一个数据集,例如鸢尾花,我想将花瓣宽度与其他数据集进行回归。您可以使用方括号 [] 调用 data.frame 的列:

from sklearn.datasets import load_iris
from sklearn.linear_model import LinearRegression

dat = load_iris(as_frame=True).frame

X = dat[['sepal length (cm)','sepal width (cm)','petal length (cm)']]
y = dat[['petal width (cm)']]

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

LR = LinearRegression()
LR.fit(X_train,y_train)
plt.scatter(x=y_test,y=LR.predict(X_test))

【讨论】:

以上是关于试图理解 ML 上的示例脚本的主要内容,如果未能解决你的问题,请参考以下文章

谷歌应用程序脚本试图通过 do post 访问网络应用程序上的发布数据

sh ml脚本

CRON没有执行R脚本文件

如何从 Azure ML 管道脚本步骤注册模型

使用特定 URL 和脚本构建代理轮换器

如何将脚本语言实现到 C 应用程序中?