• 鸢尾花等表格数据简单分类器(模型可以替换)


    pip install keras
    pip install tensorflow
    pip install graphviz
    pip install pydot-ng

    pip install pydot
    pip install pandas

    pip install
    sklearn

    https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi 

     加入path后 报错修改pydot.py dot.bat 后缀 .bat 为 .exe

    def get_executable_extension():
        # type: () -> str
        if is_windows():
            return '.exe' if is_anacoda() else '.exe'
        else:
            return ''

    Keras 2.2.4

    Keras-Applications 1.0.6

    Keras-Preprocessing 1.0.5

    tensorflow          1.11.0

    numpy               1.15.2

    pandas              0.23.4

    scikit-learn        0.20.0

    测试成功

     1 # -*- coding: utf-8 -*-
     2 import numpy
     3 import pandas
     4 from keras.layers.core import Dense, Dropout, Activation
     5 from keras.models import Sequential
     6 from keras.utils import np_utils
     7 from keras.utils import plot_model
     8 from sklearn import utils
     9 from sklearn.model_selection import StratifiedShuffleSplit
    10 from sklearn.preprocessing import LabelEncoder
    11 
    12 
    13 def load_data():
    14     '''
    15     获取数据
    16     :return x_train, y_train, x_test, y_test, encoder:
    17     '''
    18     # 载入数据
    19     data_frame = pandas.read_csv("iris.csv", header=None)
    20     data_set = data_frame.values
    21     # 取所有行,从第0列到第4列(不包含第4列)
    22     x_data = data_set[:, 0:4].astype(float)
    23     # 取所有行,第4列
    24     y_data = data_set[:, 4]
    25     # 标签编码
    26     encoder = LabelEncoder()
    27     # 将字符串编译成0,1,2,3分类
    28     # encoder.classes_以npy可以保存加载编码规则(np.save('encoder.npy',encoder.classes_),encoder.classes_=np.load('encoder.npy'))
    29     encoded_transform_y = encoder.fit_transform(y_data)
    30     # 编译好的0,1,2,3 One_Hot
    31     y_data = np_utils.to_categorical(encoded_transform_y)
    32     # 打乱数据集
    33     x_data, y_data = utils.shuffle(x_data, y_data)
    34     # 切分数据集
    35     train_idx, test_idx = next(iter(
    36         StratifiedShuffleSplit(n_splits=1, test_size=0.2,
    37                                random_state=0).split(x_data, y_data)))
    38     x_train = x_data[train_idx]
    39     y_train = y_data[train_idx]
    40     x_test = x_data[test_idx]
    41     y_test = y_data[test_idx]
    42     return x_train, y_train, x_test, y_test, encoder
    43 
    44 
    45 def compile_model():
    46     # 模型
    47     _model = Sequential()
    48     _model.add(Dense(10, input_shape=(4,)))
    49     _model.add(Activation('tanh'))
    50     _model.add(Dropout(0.2))
    51     _model.add(Dense(3))
    52     _model.add(Activation('softmax'))
    53     _model.compile(
    54         loss="categorical_crossentropy",
    55         optimizer='adam',
    56         metrics=['accuracy'])
    57     # 生成模型图片
    58     plot_model(_model, to_file='model.png', show_shapes='True')
    59     return _model
    60 
    61 
    62 def train_model(_model, _x_train, _y_train, _x_test, _y_test):
    63     # 训练
    64     history = _model.fit(_x_train, _y_train, epochs=100, batch_size=12,
    65                          verbose=1, validation_data=[_x_test, _y_test])
    66     # 测试训练集
    67     score = _model.evaluate(_x_test, _y_test, verbose=1)
    68     print('Test score:', score[0])
    69     print('Test accuracy:', score[1])
    70 
    71 
    72 def test(_model, _encoder, _x_test):
    73     # 校验,返回标签
    74     result = _model.predict(_x_test)
    75     result = numpy.argmax(result, axis=1)
    76     result = _encoder.inverse_transform(result)
    77     print(result)
    78 
    79 
    80 if __name__ == '__main__':
    81     x_train, y_train, x_test, y_test, encoder = load_data()
    82     model = compile_model()
    83     train_model(model, x_train, y_train, x_test, y_test)
    84     test(model, encoder, x_test)
  • 相关阅读:
    Pascal Analyzer 4 代码分析使用简要说明
    界面动态配置:持久化反持久化
    (Sql Server)数据的拆分和合并
    javascript中的promise和deferred:实践(二)
    对面向接口编程、按分层建项目的反思和新的分层结构思路
    revel框架教程之权限控制
    等待与通知机制
    实现代码编辑器
    自定义html标签
    javascript生成自定义的arcgis simpletoolbar
  • 原文地址:https://www.cnblogs.com/yzpopulation/p/9742742.html
Copyright © 2020-2023  润新知