স্কলারন: লিনিয়াররেগ্রেশন.ফিট () কল করার সময় নমুনাগুলির অসামঞ্জস্য সংখ্যার সাথে অ্যারেগুলি পাওয়া গেছে


102

কেবল একটি সাধারণ লিনিয়ার রিগ্রেশন করার চেষ্টা করছি তবে আমি এই ত্রুটিটি দ্বারা আক্রান্ত হয়েছি:

regr = LinearRegression()
regr.fit(df2.iloc[1:1000, 5].values, df2.iloc[1:1000, 2].values)

যা উত্পাদন করে:

ValueError: Found arrays with inconsistent numbers of samples: [  1 999]

এই নির্বাচনের অবশ্যই একই মাত্রা থাকতে হবে এবং সেগুলি নিষ্পাপ অ্যারে হওয়া উচিত, তাই আমি কী অনুপস্থিত?

উত্তর:


116

দেখে মনে হচ্ছে স্কেলনার জন্য ডেটা আকারের (সারি নম্বর, কলাম নম্বর) প্রয়োজন। যদি আপনার ডেটার আকারটি (সারি সংখ্যা,) পছন্দ হয় তবে (999, )এটি কার্যকর হয় না। ব্যবহার করে numpy.reshape(), আপনার অ্যারের আকার পরিবর্তন করা উচিত (999, 1), যেমন ব্যবহার করে using

data=data.reshape((999,1))

আমার ক্ষেত্রে এটি কাজ করেছিল।


6
আমার ডেটা আকার (10 এল,), আমি কীভাবে এটি (10 এল, 1) এ রূপান্তর করব। আমি যখন ডেটা = ডেটা.শ্রেপ (লেন (ডেটা), 1) ব্যবহার করি, ফলস্বরূপ আকৃতিটি (10 এল, 1 এল) নয় (10 এল, 1)
ইউজার 3841581

@ ব্যবহারকারী3841581 এই পোস্টটি দেখুন দয়া করে ।
জর্জি লিউ

1
@ বোর্ন মন্তব্যের জন্য ধন্যবাদ। আমি আরও আবিষ্কার করেছি যে এক্স_ট্রেন আকারের হওয়া উচিত (এন, 1) তবে y_train আকারের (এন,) নয় (এন, 1) হওয়া উচিত, অন্যথায় এটি কাজ করে না, কমপক্ষে আমার জন্য নয়।
ক্রসএন্ট্রপি

ডেটা.আরশেপ (...) ডেটা সিরিজ অবজেক্ট হলে বর্ণনামূলক সতর্কতা প্রদর্শন করতে পারে। ডেটা.ভেলিউস.শ্যাপ (...)
নাইটফ্যারি

তথ্য data.reshape (-1,1) =
Itachi

24

দেখে মনে হচ্ছে আপনি পান্ডাস ডেটাফ্রেম ব্যবহার করছেন (নাম df2 থেকে)।

আপনি নিম্নলিখিতগুলি করতে পারেন:

regr = LinearRegression()
regr.fit(df2.iloc[1:1000, 5].to_frame(), df2.iloc[1:1000, 2].to_frame())

দ্রষ্টব্য: আমি "মানগুলি" অপসারণ করেছি কারণ এটি পান্ডাস সিরিজটিকে numpy.ndarray তে রূপান্তর করে এবং numpy.ndarray এর_ফ্রেমে () বৈশিষ্ট্য নেই।


11

উদাসিটি গভীর শেখার ফাউন্ডেশন কোর্সে দেখা:

df = pd.read_csv('my.csv')
...
regr = LinearRegression()
regr.fit(df[['column x']], df[['column y']])

2
ধন্যবাদ! এটি বোঝার পক্ষে সত্যই সহজ এবং সহজ!
জুয়ান এ নাভারো

আসলে, ওয়াই প্যারামিটারটি (দৈর্ঘ্য) আকার হিসাবে প্রত্যাশিত। ধন্যবাদ!
মাইকেল_জ্যাং

5

আমি মনে করি রেগ্রেফিটের "এক্স" যুক্তিটি একটি ম্যাট্রিক্স হওয়া দরকার, সুতরাং নিম্নলিখিতটি কাজ করা উচিত।

regr = LinearRegression()
regr.fit(df2.iloc[1:1000, [5]].values, df2.iloc[1:1000, 2].values)

4

আমি এই ত্রুটির মুখোমুখি হয়েছি কারণ আমি আমার ডেটা একটিতে রূপান্তর করেছি np.array। আমি np.matrixপরিবর্তে আমার ডেটা রূপান্তর করে এবং ট্রান্সপোজ নিয়ে সমস্যার সমাধান করেছি।

ValueError: regr.fit(np.array(x_list), np.array(y_list))

সঠিক: regr.fit(np.transpose(np.matrix(x_list)), np.transpose(np.matrix(y_list)))


2
expects X(feature matrix)

আপনার বৈশিষ্ট্যগুলিকে এটিকে টুপলে রাখার চেষ্টা করুন:

বৈশিষ্ট্যগুলি = ['টিভি', 'রেডিও', 'সংবাদপত্র']
এক্স = ডেটা [বৈশিষ্ট্য]

1

আমিও একই সমস্যার মুখোমুখি হয়েছি। আমার ক্ষেত্রে সমস্যাটি ছিল, এক্সে সারিগুলির সংখ্যা y এর মধ্যে সারি সংখ্যার সমান নয়।

উদাহরণস্বরূপ বৈশিষ্ট্য কলামগুলিতে এন্ট্রি সংখ্যা টার্গেট ভেরিয়েবলের এনট্রেসের সংখ্যার সমান নয়, যেহেতু আমি ফ্রিচার কলামগুলি থেকে কিছু সারি বাদ দিয়েছি।


0

দুটি অ্যারে বিশিষ্ট করতে (অ্যারে 1 এবং অ্যারে 2) তাদের নিম্নলিখিত দুটি প্রয়োজনীয়তা পূরণ করতে হবে:

1) তাদের একটি numpy.ndarray হতে হবে

পরিক্ষা কর

type(array1)
# and
type(array2)

যদি না হয় তবে তাদের মধ্যে কমপক্ষে একজনের পারফর্ম করুন

array1 = numpy.ndarray(array1)
# or
array2 = numpy.ndarray(array2)

2) মাত্রাগুলি নিম্নলিখিত হিসাবে হওয়া দরকার:

array1.shape #shall give (N, 1)
array2.shape #shall give (N,)

এন হ'ল অ্যারেতে থাকা আইটেমগুলির সংখ্যা। সঠিক সংখ্যার অক্ষটি সম্পাদন করে অ্যারে 1 প্রদান করতে:

array1 = array1[:, numpy.newaxis]

0

এক্স আর্গুমেন্টের উপরে এটি উল্লিখিত হিসাবে অবশ্যই একটি ম্যাট্রিক্স বা জ্ঞাত মাত্রাগুলি সহ একটি অদ্ভুত অ্যারে হতে হবে। সুতরাং আপনি সম্ভবত এটি ব্যবহার করতে পারেন:

df2.iloc[1:1000, 5:some_last_index].values

সুতরাং আপনার ডাটাফ্রেমটি পরিচিত মাত্রাগুলি সহ একটি অ্যারেতে রূপান্তরিত হবে এবং আপনাকে এটি পুনরায় আকার দেওয়ার দরকার হবে না


-1

ট্রেন পরীক্ষার বিভাজনের সময় আপনি হয়ত ভুল করেছেন

x_train,x_test,y_train,y_test=sklearn.model_selection.train_test_split(X,Y,test_size)

উপরের কোডটি সঠিক

আপনি নীচের মত কাজ করেছেন যা ভুল

x_train,y_train,x_test,y_test=sklearn.model_selection.train_test_split(X,Y,test_size)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.