MLPClassifier дает только один прогноз для разных входных данных - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь использовать sci-kit learn впервые и, похоже, натолкнулся на препятствие, когда программа предсказывает один и тот же ответ для любого набора данных. Я нашел файл .csv со многими списками подержанных автомобилей и попытался создать модель, которая будет прогнозировать цену на основе года и пробега. Большая часть программы сортирует электронную таблицу по переменной X, которая содержит год и пробег в формате [[2014.0, 35725.0], [2013.0, 19606.0], [2013.0, 48851.0] ...] и переменную Y, которая соответствующие цены [8995.0, 10888.0, 8995.0 ...]. Эти две переменные помещаются в автомобиль MLPClassifier с помощью car.fit (X, y). Использование car.predict всегда даст одинаковый результат для любых данных, которые выглядят как [12999. 12999.] Если кто-то захочет взглянуть на этот вопрос, он будет очень признателен.

Весь код:

import csv
from sklearn.neural_network import MLPClassifier #Neural Network
y = [] #Y is car price, key
year = [] #X
mileage = [] #X
X = []
with open('true_car_listings.csv') as csv_file:
    #Reads the data set and makes lists
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    line = 0
    for row in csv_reader:
        if line < 1000:
            if line != 0:
                y.append(float(row[0]))
                year.append(float(row[1]))
                mileage.append(float(row[2]))
        line = line + 1
        line_count += 1
    #Set X variable
    a=0
    for item in year:
        while a < 999:
            addToX = [year[a], mileage[a]]
            X.append(addToX)
            a = a + 1
print('X is ' + str(X))
print('y is ' + str(y))
#Sorted into X and y variables

car = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
car.fit(X,y)
print("Training set score: " + str(car.score(X, y))) #Scores the cat MLPClassifier
print(car.predict([[2014, 94550], [2002, 22345]])) #Predicts price based on year and mileage

В результате:

X is [[2014.0, 35725.0], [2013.0, 19606.0], [2013.0, 48851.0], [2014.0, 39922.0], [2016.0, 22142.0], [2012.0, 105246]..........
y is [8995.0, 10888.0, 8995.0, 10999.0, 14799.0, 7989.0, 14490.0, 13995.0, 10495.0, 9995.0, 12921.0, 12000.0, 7750.0.............
Training set score: 0.001001001001001001
[12999. 12999.]

1 Ответ

0 голосов
/ 31 марта 2020

Публикация моего исходного комментария в качестве ответа:

Ваша задача здесь является регрессией , а не задачей классификации, поэтому вам, вероятно, следует использовать MLPRegressor , Интерфейсы в основном одинаковы.

Классификатор будет рассматривать каждое различное значение Y как отдельный класс, и в вашем случае у вас будет почти столько же классов, сколько и примеров данных. Это также видно по аномально низкому показателю точности на тренировочном наборе, такой низкий показатель означает, что модель действительно ничего не изучала.

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