Как ввести необработанные данные для прогноза в модель? и как застраховать преобразование в числовой - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в этом (новичок ie), у меня есть набор данных о продажах, в котором много нечисловых c функций и метка «ВЫИГРАТЬ ПРОЕКТ»: 1, «ПОТЕРЯТЬ ПРОЕКТ»: 0 лучшая модель работал с ним был KNN, поэтому сначала я преобразовал нечисловые c в числовые c с помощью «preprocessing.encoder», затем я масштабировал результаты с помощью «MinMaxScaler», так что теперь мой вопрос: как ввести необработанные функции для прогнозирования метки ( ВЫИГРАТЬ ПРОЕКТ, ПРОИГРАТЬ ПРОЕКТ)? Ниже мой код для справки:

import pandas as pd
import numpy as np

import sklearn
from sklearn import linear_model
from sklearn.neighbors import KNeighborsClassifier
from sklearn.utils import shuffle
from sklearn import linear_model,preprocessing
import matplotlib.pyplot as plt
from sklearn.preprocessing import scale
from sklearn.preprocessing import MinMaxScaler
import pickle
from matplotlib import style

data = pd.read_csv("sales data-clean -project status.csv", encoding= "ISO-8859-1")
print(data.head())
le = preprocessing.LabelEncoder()
gc = le.fit_transform(list(data["ASSOCIATED WITH"]))
estimator = le.fit_transform(list(data["ESTIMATOR"]))
projectType = le.fit_transform(list(data["PROJECT TYPE"]))
projectBid = le.fit_transform(list(data["AMOUNT"]))
deal_status=data["DEAL STAGE"]
predict = "DEAL STAGE"
xlarge= list(zip(gc,estimator,projectType,projectBid))
scaler= MinMaxScaler()
x=scaler.fit_transform(xlarge)

y= np.array(data[predict])
x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x,y, test_size=0.20)


'''best = 0
for _ in range(100):

    x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x,y, test_size=0.20)
    model = KNeighborsClassifier(n_neighbors=19)
    #model = linear_model.LinearRegression()
    model.fit(x_train,y_train)
    acc = model.score(x_test, y_test)
    print(acc)
    if acc > best :
        best = acc
        with open("Salepredict.pickle","wb") as f:
           pickle.dump(model,f)               '''
pickle_in = open("Salepredict.pickle",'rb')
model= pickle.load(pickle_in)

predicted = model.predict(x_test)
#print(predicted)
names = ["Lost", "Win"]
for x in range(len(predicted)):
 print("predicted :",names[predicted[x]],"DATA:" , x_test[x], "Actual:", y_test[x])

Спасибо,

...