【问题标题】:How to Insert new data to make a prediction? Sklearn如何插入新数据进行预测?学习
【发布时间】:2019-10-27 04:17:05
【问题描述】:

我正在使用 Iris 数据集进行机器学习中的“Hello world”。对于这个模型的输入,我已经有了一个可以接受的结果,我正在使用 80% 的信息来训练它,剩下的 20% 来做验证。我正在使用 6 种预测算法,效果很好。

但是我有一个问题,如何插入新信息以便对其进行分析?如何插入花的特征并告诉我它是鸢尾花的类型?是:Iris-setosa、Iris-versicolor 还是 Iris-virginica?

# Load libraries
import pandas
from pandas.plotting import scatter_matrix
from sklearn import model_selection
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

# Load dataset
    url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"

names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = pandas.read_csv(url, names=names)




#######Evaluate Some Algorithms########


#Create a Validation Dataset
# Split-out validation dataset
array = dataset.values
X = array[:,0:4]
Y = array[:,4]
validation_size = 0.20
seed = 7
X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)



########Build Models########
# Spot Check Algorithms
models = []
models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC(gamma='auto')))
# evaluate each model in turn
results = []
names = []
for name, model in models:
    kfold = model_selection.KFold(n_splits=10, random_state=seed)
    cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)


########Make Predictions########
print('######## Make Predictions ########')
# Make predictions on validation dataset
knn = KNeighborsClassifier()
knn.fit(X_train, Y_train)
predictions = knn.predict(X_validation)
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))

【问题讨论】:

    标签: python-3.x machine-learning scikit-learn


    【解决方案1】:

    我认为你可以关注另一个post 来保存你的模型,然后你可以加载他并传递新数据并进行一些预测。

    请记住将数据设置为与训练期间使用的相同的输入形状。

    import cPickle
    # save the classifier
    with open('my_dumped_classifier.pkl', 'wb') as fid:
        cPickle.dump(gnb, fid)    
    
    # load it again
    with open('my_dumped_classifier.pkl', 'rb') as fid:
        gnb_loaded = cPickle.load(fid)
    
    # make predictions
    

    【讨论】:

      猜你喜欢
      • 2020-10-07
      • 2020-03-24
      • 2017-05-03
      • 2012-11-16
      • 1970-01-01
      • 2012-05-30
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多