python-3.x - 如何插入新数据进行预测?斯克学习

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

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

但是我有一个问题,如何插入新信息以便对其进行分析?如何插入花朵的特征并告诉我它的鸢尾花类型?或者:山鸢尾、杂色鸢尾或维吉尼亚鸢尾?

# 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))

最佳答案

我想你可以关注另一个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

关于python-3.x - 如何插入新数据进行预测?斯克学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565768/

相关文章:

machine-learning - Keras model.compile 指标参数的默认行为是什么?

python - python sklearn中的拟合方法

python - 如何预测 scikit-learn 中的时间序列?

python 将调试日志记录到标准输出中

python - Windows 在 subprocess.call() 上找不到文件

python - 如何获取和使用 Dropbox API 的刷新 token (Python 3.x)

python - 如何使函数定期运行特定持续时间

python-2.7 - 使用 scikit-learn 用户定义的 SVM 内核

machine-learning - 一次可以向 Caffe 传递多少张图像?

python - 卫星图像分类 Opencv