Python 3.x 插补器的X=插补器的fit(X[:,1:3])代表什么,插补器的fit(X[:,1:3])是什么意思?

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

我正在对一个数据集进行预处理,我得到了该行的错误原因 插补器=插补器拟合(X[:,1:3])。我不明白?我理解imputer=imputer(missing_values=“NaN”,strategy=“mean”),意味着用列和行中的平均值替换缺少的值。那么,我们是否在尝试将数据拟合到模型中,这是我不理解的


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) 如果可能的话,提供
    预期结果
    ,以便人们能够验证和评估他们的答案的有效性。