y,赋值在python/sklearn中做什么?
作为Python的新手,我正在尝试使用sklearn RandomForestClassifier。yhat的操作指南中的一个示例如下: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
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()在编码值时进行相同的映射呢?不知道你是否理解我的问题。谢谢