в методе подходящего броска Импутера отсутствует 1 обязательный позиционный аргумент: ошибка 'X' - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь решить проблему с отсутствующими данными на этапе предварительной обработки данных, и я неукоснительно следовал учебному пособию по udemy.

Это мой набор данных "Data.csv"

Country Age Salary  Purchased
France  44  72000   No
Spain   27  48000   Yes
Germany 30  54000   No
Spain   38  61000   No
Germany 40          Yes
France  35  58000   Yes
Spain       52000   No
France  48  79000   Yes
Germany 50  83000   No
France  37  67000   Yes 

Вот весь код.

    # Data Preprocessing

    #Importing Libraries

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd

    dataset = pd.read_csv('Data.csv')
    X = dataset.iloc[:, :-1].values
    Y = dataset.iloc[:, -1].values

    # Taking care of missing data

    from sklearn.preprocessing import Imputer
    imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)

    #This line below throws the error
    imputer = Imputer.fit(X[:, 1:3])
    X[:, 1:3] = imputer.transform(X[:, 1:3])

Приведенный выше код прекрасно работает в учебном видео, однакоКогда я запускаю приведенный выше код, я получаю следующую ошибку:

**imputer = Imputer.fit(X[:, 1:3])
Traceback (most recent call last):

  File "<ipython-input-3-dddb27392326>", line 1, in <module>
    imputer = Imputer.fit(X[:, 1:3])

TypeError: fit() missing 1 required positional argument: 'X'**

Я использую следующие спецификации:

ОС: учебник по Win 8.1 имел MAC IDE: Spyder 3.2.8 Python 3.6

Может кто-нибудь помочь мне отладить эту ошибку.

1 Ответ

0 голосов
/ 23 июня 2018

Я использую версию sklearn 0.19.1.Поэтому в коде есть ошибка, когда вы вызываете метод класса Imputer.fit вместо метода экземпляра imputer.fit, поскольку imputer является экземпляром Imputer в вашем коде.Также вы можете использовать fit_transform метод Imputer для подгонки и преобразования данных за один раз, как это

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import Imputer
import pandas as pd

dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, -1].values

# Taking care of missing data
imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)

X[:, 1:3] = imputer.fit_transform(X[:, 1:3])

Это меняет массив X на

array([['France', 44.0, 72000.0],
   ['Spain', 27.0, 48000.0],
   ['Germany', 30.0, 54000.0],
   ['Spain', 38.0, 61000.0],
   ['Germany', 40.0, 63777.77777777778],
   ['France', 35.0, 58000.0],
   ['Spain', 38.77777777777778, 52000.0],
   ['France', 48.0, 79000.0],
   ['Germany', 50.0, 83000.0],
   ['France', 37.0, 67000.0]], dtype=object)

В качестве примечания, избегайте именования экземпляров класса с тем же именем, что и сам класс.Я не изменил имя в своем ответе, чтобы указать на ошибку в коде.

...