sklearn Problem: Gefunden-arrays mit inkonsistenten Anzahl von Proben, wenn dabei die regression

scheint diese Frage gebeten worden war, bevor, aber ich kann nicht scheinen, um einen Kommentar für eine weitere Klärung auf die akzeptierte Antwort, und ich konnte nicht herausfinden, die Lösung bereitgestellt.

Ich versuche zu lernen, wie sklearn mit meinen eigenen Daten. Ich wesentlichen habe gerade das jährliche Veränderung in % BIP 2 verschiedenen Ländern über die letzten 100 Jahre. Ich versuche nur, zu lernen, mit einer einzigen Variablen für jetzt. Was ich im wesentlichen versucht zu tun, ist mit sklearn, vorherzusagen, was die BIP-Veränderung in % für Land A wird die prozentuale Veränderung in Land B BIP.

Das problem ist, dass ich erhalten eine Fehlermeldung, die sagt:

ValueError: Gefunden-arrays mit inkonsistenten zahlen der Proben: [ 1
107]

Hier ist mein code:

import sklearn.linear_model as lm
import numpy as np
import scipy.stats as st
import matplotlib.pyplot as plt
import matplotlib.dates as mdates


def bytespdate2num(fmt, encoding='utf-8'):#function to convert bytes to string for the dates.
    strconverter = mdates.strpdate2num(fmt)
    def bytesconverter(b):
        s = b.decode(encoding)
        return strconverter(s)
    return bytesconverter

dataCSV = open('combined_data.csv')

comb_data = []

for line in dataCSV:
    comb_data.append(line)

date, chngdpchange, ausgdpchange = np.loadtxt(comb_data, delimiter=',', unpack=True, converters={0: bytespdate2num('%d/%m/%Y')})


chntrain = chngdpchange[:-1]
chntest = chngdpchange[-1:]

austrain = ausgdpchange[:-1]
austest = ausgdpchange[-1:]

regr = lm.LinearRegression()
regr.fit(chntrain, austrain)

print('Coefficients: \n', regr.coef_)

print("Residual sum of squares: %.2f"
      % np.mean((regr.predict(chntest) - austest) ** 2))

print('Variance score: %.2f' % regr.score(chntest, austest))

plt.scatter(chntest, austest,  color='black')
plt.plot(chntest, regr.predict(chntest), color='blue')

plt.xticks(())
plt.yticks(())

plt.show()

Was mache ich falsch? Ich habe im wesentlichen versucht, gelten die sklearn tutorial (Sie verwendet einige diabetes-Datensatz), um meine eigenen einfachen Daten. Meine Daten, die nur das Datum enthält, Land A ist % Veränderung des BIP für das jeweilige Jahr, und Land B ist % Veränderung des BIP für das gleiche Jahr.

Ich habe versucht, die Lösungen hier und hier (im Grunde versucht, mehr herauszufinden über die Lösung im ersten link), aber nur erhalten die exakt gleichen Fehler.

Hier der traceback in Fall, dass Sie wollen, um es zu sehen:

Traceback (most recent call last):
  File "D:\My Stuff\Dropbox\Python\Python projects\test regression\tester.py", line 34, in <module>
    regr.fit(chntrain, austrain)
  File "D:\Programs\Installed\Python34\lib\site-packages\sklearn\linear_model\base.py", line 376, in fit
    y_numeric=True, multi_output=True)
  File "D:\Programs\Installed\Python34\lib\site-packages\sklearn\utils\validation.py", line 454, in check_X_y
    check_consistent_length(X, y)
  File "D:\Programs\Installed\Python34\lib\site-packages\sklearn\utils\validation.py", line 174, in check_consistent_length
    "%s" % str(uniques))
ValueError: Found arrays with inconsistent numbers of samples: [  1 107]
  • Überprüfen Sie die Formen der chntrain und austrain vor der Aufteilung in Trainings - /test-sets. Sie sollten die gleiche Form haben; der Fehler scheint zu sein, die angibt, dass die Größen sind nicht das gleiche
  • Wie kann ich das tun? Ich habe schon gegoogelt aber jede Lösung, die wir mich Form oder die Form, gibt nur den Fehler: IndexError: zu viele Indizes für das array
  • für z.B. print chngdpchange.shape, ausgdpchange.shape
InformationsquelleAutor pyman | 2015-08-19
Schreibe einen Kommentar