Склеарн выводит пропущенные значения после десятичной - PullRequest
0 голосов
/ 13 февраля 2019

Я использую линейную регрессию для прогнозирования значений.Я строю систему прогнозирования входа пользователя, и это часы входа каждого из пользователей.

Мой набор данных содержит следующие значения

login_hour Login_minute Login_second Login_day
11              20          30          2
11              21          45          2
11              45          10          2

Существуют тысячи таких значений, и я пытаюсь предсказать это.я использую библиотеку Sklearn, чтобы сделать прогноз, но мои выходные значения содержат плавающее число с нулем после десятичного числа.Также некоторые числа являются отрицательными, даже если в наборе данных нет отрицательных чисел.

Ниже мой код

model = LinearRegression()
try:
    for users in user_list:
        data = df.loc[df['user_list'] == users, 'login_hour':'login_day']

        X_train, X_test = train_test_split(data, test_size=0.5, random_state=int(time.time()))
        model.fit(X_train, X_test)
        if not df.loc[df['user_list'] == users].empty:
            X_predict = df.loc[df['user_list'] == users, 'login_hour':'login_day']
            print(users)
            print(model.predict(X_predict))
except Exception as e:
    print(e)

Ниже вывод.

User1
[[19.20795654 30.81796908 -1.17348934  4.        ]
 [19.20795654 30.81796908 -1.17348934  4.        ]
 [19.20795654 30.81796908 -1.17348934  4.        ]
 [19.24304221 38.74216465 35.94425407  4.        ]
 [19.29593815 36.93326369 40.6377267   4.        ]
 [18.88357989 53.14036774 11.89626968  4.        ]
 [18.88357989 53.14036774 11.89626968  4.        ]
 [19.29593815 36.93326369 40.6377267   4.        ]
 [19.29593815 36.93326369 40.6377267   4.        ]
 [18.88357989 53.14036774 11.89626968  4.        ]
 [19.43300738 28.03476807 37.10549659  4.        ]
 [19.43300738 28.03476807 37.10549659  4.        ]
 [19.43300738 28.03476807 37.10549659  4.        ]
 [19.         50.         51.          4.        ]
 [19.         50.         51.          4.        ]
 [19.         50.         51.          4.        ]]
User2
[[ 1.96245603e+01  8.73215646e+00  5.32679614e+00  4.00000000e+00]
 [ 1.96245603e+01  8.73215646e+00  5.32679614e+00  4.00000000e+00]
 [ 1.90995539e+01  3.32999402e+01  2.32454303e+01  4.00000000e+00]
 [ 1.90995539e+01  3.32999402e+01  2.32454303e+01  4.00000000e+00]
 [ 2.05057605e+01 -2.92241595e+01 -1.76151096e+01  4.00000000e+00]
 [ 1.97164859e+01  1.09897454e+01  1.64568207e+01  4.00000000e+00]
 [ 1.87643468e+01  3.99670330e+01  1.50683761e+01  4.00000000e+00]
 [ 1.88341735e+01  3.99791100e+01  1.98189050e+01  4.00000000e+00]
 [ 1.91961218e+01  3.78000218e+01  3.95673183e+01  4.00000000e+00]
 [ 1.91006661e+01  4.22668915e+01  4.28252518e+01  4.00000000e+00]
 [ 1.82946119e+01  7.81641824e+01  9.76385715e+01  4.00000000e+00]
 [ 2.00000000e+01 -4.54747351e-13  4.30000000e+01  4.00000000e+00]
 [ 2.00000000e+01 -4.54747351e-13  4.30000000e+01  4.00000000e+00]
 [ 2.00000000e+01 -4.54747351e-13  4.30000000e+01  4.00000000e+00]]

Вопрос

Вы можете видеть такие значения, как 4. и 50., почему они пропускают значения после десятичной дроби и как их получить4.0 или что-то.Также возможно ли ограничить вывод только двумя знаками после запятой или даже нулем?

Также некоторые из моих выходных значений являются отрицательными, как -4.54747351e-13.У меня нет никаких отрицательных значений в наборе данных, но мой вывод имеет.Кто-нибудь может дать мне причину, почему?

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