Jupyter Notebook Python Nerror - PullRequest
       1

Jupyter Notebook Python Nerror

0 голосов
/ 11 сентября 2018

У меня есть следующее NameError, и я не уверен почему. Я только изменил путь к входному файлу и имена столбцов из учебника, который работал для меня.

import json
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import MinMaxScaler
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

file = 'cuisine_ingredients.json'
with open(file) as train_file:
   json = json.load(train_file)

train = pd.concat(map(pd.DataFrame,json))
train.reset_index(level=0, inplace=True)

unique_cuisines = train['cuisine'].nunique()

labelEncoder_cuisine = LabelEncoder()
labelEncoder_cuisine.fit(train['cuisine'])
train['cuisine'] = labelEncoder_cuisine.transform(train['cuisine'])

labelEncoder_ingredients = LabelEncoder()
labelEncoder_ingredients.fit(train['ingredients'])
train['ingredients'] = 
labelEncoder_ingredients.transform(train['ingredients'])

X = np.array(train.drop(['id'], 1).astype(float))

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)

kmeans.fit(X_scaled)

KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=600,
n_clusters=unique_cuisines, n_init=10, n_jobs=1, precompute_distances='auto',
random_state=None, tol=0.0001, verbose=0)

Я продолжаю получать NameError: name 'kmeans' is not defined за kmeans.fit(X_scaled).

Ура :)

Ответы [ 4 ]

0 голосов
/ 11 сентября 2018

Сначала инициализируйте модель на основе ваших параметров.

kmeans = KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=600,n_clusters=unique_cuisines, n_init=10, n_jobs=1, precompute_distances='auto',random_state=None, tol=0.0001, verbose=0)

После инициализации модели вы можете попытаться подогнать данные.

kmeans.fit(X_scaled)
0 голосов
/ 11 сентября 2018

Попробуйте KMeans().fit(X_scaled) вместо kmeans.fit(X_scaled). В scikit-learn вам сначала нужно создать экземпляр модели, прежде чем вы сможете в нее вписаться.

Я не знаю, что имел в виду автор записной книжки, но обычно вы хотите сохранить свою модель в переменной, поэтому вы также можете написать ее следующим образом:

kmeans = KMeans()
kmeans.fit(X_scaled)
0 голосов
/ 11 сентября 2018

Поменяйте местами эти 2 строки кода.

kmeans.fit(X_scaled)

KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=600,
n_clusters=unique_cuisines, n_init=10, n_jobs=1, precompute_distances='auto',
random_state=None, tol=0.0001, verbose=0)

После чего вам, вероятно, понадобятся результаты:

X_transformed = kmeans.transform(X_scaled)
0 голосов
/ 11 сентября 2018

Я только кратко рассмотрел ваш код, но похоже, что вы не определили «kmeans» (строчные буквы k и m), как написали его в «kmeans.fit ()».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...