Python 3.x 插补器的X=插补器的fit(X[:,1:3])代表什么,插补器的fit(X[:,1:3])是什么意思?
我正在对一个数据集进行预处理,我得到了该行的错误原因 插补器=插补器拟合(X[:,1:3])。我不明白?我理解imputer=imputer(missing_values=“NaN”,strategy=“mean”),意味着用列和行中的平均值替换缺少的值。那么,我们是否在尝试将数据拟合到模型中,这是我不理解的Python 3.x 插补器的X=插补器的fit(X[:,1:3])代表什么,插补器的fit(X[:,1:3])是什么意思?,python-3.x,pandas,data-science,sklearn-pandas,Python 3.x,Pandas,Data Science,Sklearn Pandas,我正在对一个数据集进行预处理,我得到了该行的错误原因 插补器=插补器拟合(X[:,1:3])。我不明白?我理解imputer=imputer(missing_values=“NaN”,strategy=“mean”),意味着用列和行中的平均值替换缺少的值。那么,我们是否在尝试将数据拟合到模型中,这是我不理解的 import pandas as pd from sklearn import svm import matplotlib.pylot as plt %matplotlib inlin
import pandas as pd
from sklearn import svm
import matplotlib.pylot as plt %matplotlib inline
from sklearn.preprocessing import Imputer
import seaborn as sns; sns.set(font_scale=1.2)
stock=pd.read_csv("C:/Users/Dulangi/Downloads/winequality-red.csv")
stock.head()
g=sns.lmplot('alcohol','quality',data=stock,height=7, truncate=True, scatter_kws={"s":100})
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[:,1:3])
我得到的错误
NameError Traceback (most recent call last)
<ipython-input-4-620c08822929> in <module>
14 imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
15
---> 16 imputer = imputer.fit(X[:,1:3])
NameError: name 'X' is not defined
NameError Traceback (most recent call last)
<ipython-input-4-620c08822929> in <module>
14 imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
15
---> 16 imputer = imputer.fit(X[:,1:3])
NameError: name 'X' is not defined
NameError回溯(最近一次呼叫上次)
在里面
14插补器=插补器(缺失_值=“NaN”,策略=“平均值”,轴=0)
15
--->16插补器=插补器拟合(X[:,1:3])
名称错误:未定义名称“X”
NameError回溯(最近一次呼叫上次)
在里面
14插补器=插补器(缺失_值=“NaN”,策略=“平均值”,轴=0)
15
--->16插补器=插补器拟合(X[:,1:3])
名称错误:未定义名称“X”
这是什么意思:+
simplemputer.fit(X_系列)
,+
SimpleImputer.transform(X\u有效)
或SimpleImputer.transform(X\u测试)
让我先试着回答这个问题:
插补器基本上会找到缺失的值,然后根据策略进行替换。如您所见,在下面的代码示例中,我使用了strategy=mean
,这意味着给定一个数据X_列
,您可以在它的每一列中找到mean
,然后用为相应列计算的mean
值替换缺少的值
现在,一旦您执行了SimpleImputer.fit(X_train)
,您就已经有了用于插补的平均值。接下来,当您应用SimpleImputer.transform(X_测试)
时,您实际上也在通过先前计算的平均值
来插补缺失的值
技术方案
看起来您正试图从sklearn.preprocessing
导入插补器。根据sklearn版本0.21.3的定义,没有类似于sklearn.preprocessing.Imputer的内容
相反,请使用以下命令:
来自sklearn.impute导入SimpleImputer
将numpy作为np导入
作为pd进口熊猫
#插补
my_inputer=SimpleImputer(缺少_值=np.nan,strategy='mean')
插补的X_列=pd.数据帧(my_插补器.fit_变换(X_列))
imputed_X_valid=pd.DataFrame(my_imputer.transform(X_valid))
#插补删除列名;把它们放回去
插补的列=X列=X列
插补_X_valid.columns=X_valid.columns
一些有用的资源:
我将鼓励您查看这些资源
这个问题可以通过如下定义X来解决,也可以引入y来插补
X=stock.iloc[:,0:5]。值
y=stock.iloc[:,5]。值我们使用sci工具包库中的插补器,也就是说,为了填充缺失值,我们使用数据集中所考虑列的平均值或模式来填充缺失值
在[:,1:3]中,逗号前面的左侧表示选择数据集中的所有行,您甚至可以指定要选择的行的范围,而不是:假设我们说的是1:10,然后它选择前10行
逗号后面的右边表示选择前3列,从1:3开始,我们甚至可以说:表示选择所有列
然后fit实际存储在训练数据集上计算的平均值或模式值,使用我们指定的策略填充缺失值,然后在转换期间在测试数据上使用它
参考这些以获得更好的想法
您必须将数据集值分配到X
变量中,正如我在下面提到的那样
如果正在运行内核,请确保不应在内核中重置变量值
import pandas as pd
from sklearn import svm
import matplotlib.pylot as plt %matplotlib inline
from sklearn.preprocessing import Imputer
import seaborn as sns; sns.set(font_scale=1.2)
stock=pd.read_csv("C:/Users/Dulangi/Downloads/winequality-red.csv")
stock.head()
g=sns.lmplot('alcohol','quality',data=stock,height=7, truncate=True, scatter_kws={"s":100})
X = stock.iloc[ : , :-1].values
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
imputer = imputer.fit(X[:,1:3])
你的主要问题是关于“插补者”。您在此处提出的建议特定于您当前的数据集。它可能适用于也可能不适用于其他人的插补需求。此外,您的数据在本地可用。如果其他人希望复制该问题,则该问题将不可用。然而,如果你建议一种本质上是通用的方法,以便其他访问者可以使用它,那将是非常好的。你可以做些事情来提高你的问题的质量:(1)给出一个简单的、可复制的数据集。(2) 如果您有错误日志,请在单独的代码块中共享,以便其他人在需要时查看。(3) 使用#标题和#副标题、代码块
,以及其他可用的允许选项,在stackoverflow上进行降价,制作单独的部分。这使你的问题在陈述中更具可读性和清晰性。(4) 如果可能的话,提供预期结果
,以便人们能够验证和评估他们的答案的有效性。