基于新数据的迁移学习预测

【建立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')
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值