总是搜不到自己想要的程序。。。。emmm,那就自己写咯
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import matplotlib
import random
import tensorflow as tf
from sklearn import svm
from sklearn.decomposition import PCA
train = pd.read_csv('./MNIST_data/train.csv')
print(train.shape)
#将特征和标签分开
target = train['label']
train = train.drop("label",axis=1)# Drop the label feature
from sklearn.preprocessing import StandardScaler #标准化
X = train.values
X_std = StandardScaler().fit_transform(X.astype('float'))
# 划分数据集
from sklearn.model_selection import train_test_split
x_train,x_test, y_train, y_test = train_test_split(X_std,target,test_size=0.3, random_state=0)
n_comp = 100
pca = PCA(n_comp)
pca.fit(x_train)
train_proj = pca.transform(x_train) #转化成主成分的矩阵
test_proj = pca.transform(x_test)
print(train_proj.shape)
print(test_proj.shape)
# # SVM分类测试
# clf = svm.SVC(gamma=0.001, C=100.)
# clf.fit(x_train, y_train)
# # clf.predict(test_proj)
# score = clf.score(x_test, y_test)
# print('精度为%s' % score) #未降维96%,降维97%;
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(512, activation='relu', input_shape=(100,)))
#model.add(Dropout(0.2))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))
model.summary()
#opt = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
history = model.fit(train_proj,y_train,batch_size=100,epochs=20,verbose=2,validation_data=(test_proj, y_test))
score = model.evaluate(test_proj, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])