【建立MLP模型】
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(units = 50,input_dim =1,activation='relu')) # 隐藏层包含50个神经元
model.add(Dense(units = 50,activation='relu'))
model.add(Dense(units = 1,activation='linear')) # 输出层
model.compile(optimizer='adam',loss='mean_squared_error')
model.summary()
# 模型训练与二次训练
model.fit(x,y)
model.fit(x2,y2)
#模型保存到本地
from sklearn.externals import joblib
joblib.dump(model,"model1.m")
# 加载本地模型
model2 = joblib.load("model1.m")
【数据增强】
from keras.preprocessing.image import ImageDataGenerator
path = 'origin_data' # 待增强图片的路径
dst_path = 'gen_data' # 增强后图片的存储路径
# 创建实例、配置图片增强参数
datagen =ImageDataGenerator(rotation_range=10,width_shift_range=0.1,height_shift_range=0.02,,horizontal_flip=True,vertical_flip=True)
gen=datagen.flow_from_directory(path,target_size=(224,224),batch_size=2,save_to_dir=dst_path,save_prefix='gen',save_format='jpg')
for i in range(100):
gen.next()
【批量图片路径加载】
import os
folder = "train_data" # 训练数据文件夹名称
dirs = os.listdir(folder) # 获取文件夹下所有文件名称
# 图片路径合成
img_path = []
for i in dirs:
if os.path.splitext(i)[1] == ".jpg":
img_path.append(i)
img_path = [folder+"//"+i for i in img_path]
【定义一个提取图片特征的方法】
def modelProcess(img_path,model):
img = load_img(img_path,target_size=(224,224))
img = img_to_array(img) # 转化成对应数组
x = np.expand_dims(img,axis=0)
x = preprocess_input(x)
x_vgg = model.predict(x) # 模型提取特征
x_vgg = x_vgg.reshape(1,7*7*512) # 转化成一行若干列的数组
return x_vgg
# 批量提取图片特征
features1 = np.zeros([len(img_path),7*7*512])
for i in range(len(img_path)):
feature_i = modelProcess(img_path[i],model_vgg)
print('preprocessed:',img_path[i])
features1[i] = feature_i
【无监督采用聚类方法】
# KMeans聚类
from sklearn.cluster import KMeans
cnn_kmeans = KMeans(n_clusters=2,max_iter=2000)
cnn_kmeans.fit(X)
y_pred_kmeans = cnn_kmeans.fit_predict(X)
# Meanshift聚类
from sklearn.cluster import MeanShift,estimate_bandwidth
# 自动获取区域宽度
bw = estimate_bandwidth(X1,n_samples=140) # 140个样本
# 建立模型
ms = MeanShift(bandwidth=bw)
ms.fit(X)
y_pred_ms = ms.predict(X)
【数据降维(PCA处理)】
from sklearn.preprocessing import StandardScaler
# 数据标准化处理——去噪、优化结果
stds = StandardScaler()
X_norm = stds.fit_transform(X)
# PCA降维
from sklearn.decomposition import PCA
pca = PCA(n_components = 200)
X_pca = pca.fit_transform(X_norm)
# 计算主成分方差比例
var_ratio = pca.explained_variance_ratio
# 查看主成分方差比之和
print(np.sum(var_ratio))
【统计数据次数】
from collections import Counter
print(Counter(y_pred_ms)
【批量可视化结果】
plt.figure(figsize=(10,30)
for i in range(45): # 45行
for j in range(5): # 每行5列
img = load_img(img_path[i*5+j] # 加载图片路径
plt.subplot(45,i*5+j+1)
plt.title('apple' if y_pred_ms[i*5+j]==normal_apple_id else 'others')
plt.imshow(img),plt.axis('off')