php是最好的语言

python3利用神经网络预测分类和数据

import pandas as pd
import numpy as np
from scipy.interpolate import lagrange #导入拉格朗日插值函数
from sklearn.datasets import load_iris,load_diabetes
from keras.models import Sequential #导入神经网络初始化函数
from keras.layers.core import Dense, Activation #导入神经网络层函数、激活函数
from numpy.random import shuffle
from sklearn import metrics
import sys

class LM():
    def secondCategory(self,data):
        y = pd.DataFrame(data.target,columns=['result'])
        x = pd.DataFrame(data.data)
        data = pd.concat([x,y],axis=1)
        data = data[data['result'] != 2].as_matrix()

        shuffle(data)

        x_train = data[:int(len(data)*0.8),:4]
        y_train = data[:int(len(data)*0.8),4]

        x_test = data[int(len(data)*0.8):,:4]
        y_test = data[int(len(data)*0.8):,4]

        net = Sequential() #建立神经网络
        net.add(Dense(input_dim = 4, output_dim = 10)) #添加输入层(3节点)到隐藏层(10节点)的连接
        net.add(Activation('relu')) #隐藏层使用relu激活函数
        net.add(Dense(input_dim = 10, output_dim = 1)) #添加隐藏层(10节点)到输出层(1节点)的连接
        net.add(Activation('sigmoid')) #输出层使用sigmoid激活函数
        net.compile(loss = 'binary_crossentropy', optimizer = 'adam') #编译模型,使用adam方法求解

        net.fit(x_train, y_train, nb_epoch=50, batch_size=1) #训练模型,循环1000次
        # net.save_weights(netfile) #保存模型

        predict_result = net.predict_classes(x_test).reshape(len(x_test)) #预测结果变形

        cm_train = metrics.confusion_matrix(y_test, predict_result)
        result = pd.DataFrame(cm_train, index = range(0,2), columns = range(0,2))
        print("预测结果")
        print(result)

        #     0  1
        # 0  12  0
        # 1   0  8

    def Lpredict(self,data):
        y = pd.DataFrame(data.target)
        x = pd.DataFrame(data.data)

        data = pd.concat([x,y],axis=1).as_matrix()

        shuffle(data)

        x_train = data[:int(len(data)*0.8),:10]
        y_train = data[:int(len(data)*0.8),10]

        x_test = data[int(len(data)*0.8):,:10]
        y_test = data[int(len(data)*0.8):,10]

        model = Sequential() #建立模型
        model.add(Dense(input_dim = 10, output_dim = 12))
        model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度
        model.add(Dense(input_dim = 12, output_dim = 1))
        model.compile(loss='mean_squared_error', optimizer='adam') #编译模型
        model.fit(x_train, y_train, nb_epoch = 500, batch_size = 16) #训练模型,学习一万次

        print(model.predict(x_test))



if __name__=='__main__':
    data = load_iris()
    lm = LM()
    #这里预测分类
    # lm.secondCategory(data)
    #这里预测数据
    data = load_diabetes()
    lm.Lpredict(data)


作者:xTao 分类:LNMP 浏览:2429 评论:0