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)