যখন 1d অ্যারে প্রত্যাশিত ছিল তখন একটি কলাম-ভেক্টর y পাশ করা হয়েছিল


117

আমি মাপসই প্রয়োজন RandomForestRegressorথেকে sklearn.ensemble

forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)

এই কোডটি সর্বদা কাজ করে যতক্ষণ না আমি কিছু ডেটা প্রিপ্রোসেসিং করি ( train_y)। ত্রুটি বার্তাটি বলে:

ডেটা কনভার্সন ওয়ার্নিং: যখন 1 ডি অ্যারে প্রত্যাশিত ছিল তখন একটি কলাম-ভেক্টর ওয়াই পাস হয়েছিল। দয়া করে y এর আকারটি (n_sample,) এ পরিবর্তন করুন, উদাহরণস্বরূপ রেভেল () ব্যবহার করে।

মডেল = ফরেস্ট.ফিট (ট্রেন_ফোল্ড, ট্রেন_ই)

পূর্বে train_y একটি সিরিজ ছিল, এখন এটি অসাধারণ অ্যারে (এটি একটি কলাম-ভেক্টর)। যদি আমি আবেদন করি train_y.ravel(), তবে এটি একটি সারি ভেক্টর হয়ে যায় এবং কোনও ত্রুটি বার্তা উপস্থিত হয় না, ভবিষ্যদ্বাণীমূলক পদক্ষেপের মাধ্যমে খুব দীর্ঘ সময় লাগে (আসলে এটি কখনই শেষ হয় না ...)।

RandomForestRegressorআমার দস্তাবেজগুলিতে এটি পাওয়া গেল যে এই সমস্যাটিকে কীভাবে সমাধান করবেন কোনও ধারণা train_yহিসাবে সংজ্ঞায়িত করা উচিত y : array-like, shape = [n_samples] or [n_samples, n_outputs]?


কি train_fold.shapeএবং train_y.shape?
আলেকজান্ডার 21

@ আলেকজান্ডার: ট্রেন_ফোল্ড: টিপল (749904,24) ... ট্রেন: y.ravel (): টিপল (749904,)
ক্লাউসোস ক্লাউসোস

দেখতে ভাল. আপনি সঠিকভাবে কাজ করে কিনা তা নিশ্চিত করার জন্য আপনি 100 টি সারির ডেটা প্রশিক্ষণের চেষ্টা করেছেন (যেহেতু আপনি বলেছিলেন যে এটি কখনই শেষ হয়নি)? এছাড়াও, আপনি কি প্রাকৃতিক train_yপ্রক্রিয়াটি দুর্নীতিগ্রস্থ না করে তা নিশ্চিত করার জন্য আপনার ডেটার সামগ্রীগুলি পরীক্ষা করেছেন ?
আলেকজান্ডার 21

RF_tuned_parametersআমাদের জন্য মুদ্রণ করুন।
ইমানল লুয়েংগো

@ মিমুয়েংগো: {'এন_স্টিমেটারস': 40, 'সর্বাধিক বৈশিষ্ট্য': 0.8, 'এন_জবস': 2, 'ভারবোজ': সত্য, 'মিনি_সাম্পস_স্প্লিট': 6, 'র্যান্ডম_স্টেট': 123}
ক্লাসোস ক্লাউসোস

উত্তর:


188

এই লাইনটি পরিবর্তন করুন:

model = forest.fit(train_fold, train_y)

প্রতি:

model = forest.fit(train_fold, train_y.values.ravel())

সম্পাদনা:

.valuesঅ্যারেতে মান দেবে। (আকার: (এন, 1)

.ravel সেই অ্যারের আকারটিকে (n,) রূপান্তর করবে


33
কেউ বলতে পারে এটি আসলে কী বদলে যায় explain
রাহুল বালি

2
অ্যাট্রিবিউটআরার: 'numpy.ndarray' অবজেক্টের কোনও 'গুণাবলী' নেই
জন কেটেজিক

12
যদি আপনার কাছে নাম্পি.আন্ডাররে থাকে তবে তার পরিবর্তে ট্রেন_ই.আরভেল () ব্যবহার করুন।
দাতব্য লেসচিনস্কি

13
@ রাহুলপারাশর যা ravel()করেন তা হ'ল: যখন আপনার y.shape == (10, 1)ব্যবহার হয় y.ravel().shape == (10, )। কথায় কথায় ... এটি একটি অ্যারের সমতল করে।
পাসক্যালভিকুটেন

এটি কি দরকারী সতর্কতা?
অ্যালেক্স

18

আমি যখন কেএনএন শ্রেণিবদ্ধ প্রশিক্ষণ দেওয়ার চেষ্টা করছিলাম তখনও আমি এই পরিস্থিতির মুখোমুখি হয়েছি । তবে দেখে মনে হচ্ছে যে আমি পরিবর্তনের পরে সতর্কবার্তাটি গেছে:
knn.fit(X_train,y_train)
থেকে
knn.fit(X_train, np.ravel(y_train,order='C'))

এই লাইন এগিয়ে আমি ব্যবহার import numpy as np


.ravel()পদ্ধতির ব্যবহার করার সময় আমার কলাম ভেক্টর অ্যারের পরিবর্তে একটি সারি ভেক্টরে রূপান্তরকারী ছিল, তবে এই ফিক্সটি আমার পক্ষে কাজ করেছিল।
কাবদুল্লা

12

আমারও একই সমস্যা ছিল। সমস্যাটি হ'ল লেবেলগুলি কলামের ফর্ম্যাটে ছিল যখন এটি একটি সারিতে এটি প্রত্যাশা করে। ব্যবহারnp.ravel()

knn.score(training_set, np.ravel(training_labels))

আশা করি এটি সমাধান করে দেয়।


1
মানে np.ravel()?
বজ্রাচার্য

10

নীচে কোড ব্যবহার করুন:

model = forest.fit(train_fold, train_y.ravel())

আপনি যদি এখনও নীচের মত অভিন্ন ত্রুটি দ্বারা চড় পেতে থাকেন?

Unknown label type: %r" % y

এই কোডটি ব্যবহার করুন:

y = train_y.ravel()
train_y = np.array(y).astype(int)
model = forest.fit(train_fold, train_y)

3

এটি করার আরেকটি উপায় হ'ল ব্যবহার করা ravel

model = forest.fit(train_fold, train_y.values.reshape(-1,))

আমি কেবল যুক্ত করতে চাই যে এটি পান্ডাস সিরিজের জন্য কাজ করবে, তবে পান্ডাস ডেটা ফ্রেমগুলি নয়।
সাল আলতুরাইজি

2

নিউরাক্সেল দিয়ে আপনি সহজেই এটি সমাধান করতে পারেন:

p = Pipeline([
   # expected outputs shape: (n, 1)
   OutputTransformerWrapper(NumpyRavel()), 
   # expected outputs shape: (n, )
   RandomForestRegressor(**RF_tuned_parameters)
])

p, outputs = p.fit_transform(data_inputs, expected_outputs)

নিউউরাক্সেল হাইডারপ্যারামিটার টিউনিং এবং ডিপ লার্নিং প্রকল্পগুলিতে অটোএমএল এর জন্য একটি স্কলারন-জাতীয় কাঠামো!


1
format_train_y=[]
for n in train_y:
    format_train_y.append(n[0])

2
এই কোডটি কীভাবে এবং কেন এই সমস্যার সমাধান করে তার ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে যদিও আপনার পোস্টের মান উন্নত করতে সত্যই সহায়তা করবে এবং সম্ভবত আরও বেশি ভোটের ফলাফল হবে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, কেবল এখনই জিজ্ঞাসা করা ব্যক্তি নয়। দয়া করে সম্পাদনা ব্যাখ্যা যোগ করতে পারেন এবং সীমাবদ্ধতা এবং অনুমানের কি প্রয়োগ একটি ইঙ্গিত দিতে আপনার উত্তর।
ধর্ম

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.