Я бы хотел классифицировать по алгоритму LightGBM для Multiclass Multilable Classification, но я столкнулся с проблемой во время обучения из-за отсутствия списка входных данных. ДАННЫЕ равно Длина реальных строк равна 10000
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:,np.r_[0:6, 7:27]].values
y = dataset.iloc[:,np.r_[6]].values
x_train, x_test, y_train, y_test = train_test_split(X, y,test_size = 0.25, random_state = 0)
from sklearn.preprocessing import StandardScaler
sc=StandardScaler()
x_train = sc.fit_transform(x_train)
x_test = sc.transform(x_test)
import lightgbm as lgb
d_train = lgb.Dataset(x_train, label=y_train)
params = {}
params['learning_rate'] = 0.003
params['boosting_type'] = 'gbdt'
params['objective'] = 'binary'
params['metric'] = 'binary_logloss'
params['sub_feature'] = 0.5
params['num_leaves'] = 10
params['min_data'] = 50
params['max_depth'] = 10
clf = lgb.train(params, d_train, 100)
y_pred=clf.predict(x_test)
for i in range(0,99):
if y_pred[i]>=.5:
y_pred[i]=1
else:
y_pred[i]=0
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
Я сталкиваюсь с этой проблемой:
clf = lgb.train(params, d_train, 100)
File "..\lightgbm\engine.py", line 228, in train
...
File "..\lightgbm\basic.py", line 1336, in set_label
label = list_to_1d_numpy(_label_from_pandas(label), name='label')
File "..\lightgbm\basic.py", line 86, in list_to_1d_numpy
"It should be list, numpy 1-D array or pandas Series".format(type(data).__name__, name))
Этоошибка обнаружена в basic.py в функции: "" "Преобразование данных в массив numey 1-D." "" Когда я изменил свои данные на 1D с помощью
y_train = np.reshape(y_train, [1,trainsize])
x_train = np.reshape(x_train, [1,trainsize*26])
Проблема не решена! Затем я использую ravel
, чтобы сделать 1D для x_train, y_train
x_train = np.ravel(x_train)
y_train = np.ravel(y_train)
, но отображается новая ошибка:
\ lib \ site-packages \ lightgbm \ basic.py ", строка 872, в __init_from_np2d повысить ValueError ('Входной numpy.ndarray должен быть двухмерным')
ValueError: Входной numpy.ndarray должен быть 2-мерным
Что не так? Как я могу решитьэто?