Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
y,赋值在python/sklearn中做什么?_Python_Scikit Learn - Fatal编程技术网

y,赋值在python/sklearn中做什么?

y,赋值在python/sklearn中做什么?,python,scikit-learn,Python,Scikit Learn,作为Python的新手,我正在尝试使用sklearn RandomForestClassifier。yhat的操作指南中的一个示例如下: from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier import pandas as pd import numpy as np iris = load_iris() df = pd.DataFrame(iris.data, co

作为Python的新手,我正在尝试使用sklearn RandomForestClassifier。yhat的操作指南中的一个示例如下:

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75
df['species'] = pd.Factor(iris.target, iris.target_names)
df.head()

train, test = df[df['is_train']==True], df[df['is_train']==False]

features = df.columns[:4]
clf = RandomForestClassifier(n_jobs=2)
y, _ = pd.factorize(train['species']) # assignment I don't understand
clf.fit(train[features], y)

preds = iris.target_names[clf.predict(test[features])]
pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds'])
从sklearn.dataset导入加载
从sklearn.employ导入随机林分类器
作为pd进口熊猫
将numpy作为np导入
iris=加载_iris()
df=pd.DataFrame(iris.data,columns=iris.feature\u name)

df['is_train']=np.random.uniform(0,1,len(df))将返回的元组分解为两个不同的值,
y

是“我不再需要那个值”的惯例

这基本上与:

y = pd.factorize(train['species'])[0]

除了此代码适用于任何具有至少1个元素的可索引返回值,而您的代码明确需要返回值中正好有两项。

这意味着
pd.factorize(train['species'])
正在返回两项的元组/列表/生成器/iterable。在Python中,您可以

x, y = [1, 2]

现在
x==1
y==2
。在您的情况下,
y
成为第一个值,变量
\uu
成为第二个值。下划线
通常用作不打算使用的变量的名称。

。。。除了如果返回值有两个以上的元素,
[0]
将起作用,因此使用
y,=
也是对
pd.factorize
的输出进行健全检查。当然,如果它至少有一个元素,它将起作用。我会添加它。有人知道下划线约定的起源吗?@HansZauber在序言中它是一个匹配所有内容的变量,所以你不在乎匹配的值是什么。也许这就是起源?谢谢大家:这就为我澄清了。事实上,Juri的等效代码也适用于代码。我需要对代码有更多的理解。iris.target和y都与iris.target\u的名称匹配,这是巧合吗?由于factorize()将输入值编码为分类值,因此不能保证其编码方式与从iris.target到iris.target_名称的映射相同。例如,0被映射到setosa,但是如何保证factorize()在编码值时进行相同的映射呢?不知道你是否理解我的问题。谢谢