使用TPOT进行机器学习的一次回归测试
使用的包
初次使用TPOT进行机器学习,要从一个文件中取得包含特征值的X,从另外五个文件中取得真实值Y。
写下一点关于使用pandas numpy的心得
特征值类型:
真实值类型:
scikit-learn
from sklearn.model_selection import train_test_split
xlrd
for i in range(1, 6):
datalist.append(str("supplementary data%s.xlsx" % i))
#得到所有VRHE值
old_value = xlrd.open_workbook(filename=datalist[i-1])
sheet = old_value.sheet_by_name(sheet_name='Sheet1')
for j in range(2, 20):
#将第j行2-14列数值放入list1中
list1.append((sheet.row_values(j, 2, 14)))
for k in range(21, 26):
list1.append((sheet.row_values(k, 2, 14)))
通过for循环读取1,5号文件,使用xlrd打开workbook,打开sheet,通过row_values获取每行的值,当然也可以通过col_values获取每列的数值,同理可以获取特定位置的特征值:
feature_set='supplementary data7.xlsx'
current_densities=[[0.05],[5],[10],[15],[20]] #电流密度单位(mA/cm2)
#打开xlsx文件
old_feature = xlrd.open_workbook(filename=feature_set)
sheet1 = old_feature.sheet_by_name(sheet_name='Sheet1')
for c in range(len(current_densities)):
for l in range(2, 25):
list2 = []
#获取指定位置的特征值放入list2
list2.append((sheet1.row_values(l, 30, 38)))
在list2内层列表末端加入一个current_densities值
list2[0].extend(current_densities[c])
#将每组特征值重复12次,因为每组特征值对应12组Y值
for i in range(12):
list3.append(list2[0])
pandas,numpy
pandas,numpy的作用是将获得的list转换成Dataframe类型
a=np.array(list1)
a.shape=1380,1
X=pd.DataFrame(list3)
Y=pd.DataFrame(a)
TPOT使用
本次使用的是tpot的Regressor功能
from tpot import TPOTRegressor
#split values
def tpot_sim(X,Y):
X_train,X_test,y_train,y_test = train_test_split(X,Y,train_size=0.8)
# #建模、拟合
tpot=TPOTRegressor(generations=10,population_size=20,verbosity=2)
tpot.fit(X_train,y_train)
print(tpot.score(X_test,y_test))
#输入最佳的pipeline
tpot.export('tpot_SR_pipeline.py')