使用ChatGPT学习机器学习进阶,mpapi做材料分析使用ChatGPT学习机器学习 importnumpyasnpimportpandasaspdfromsklearn。ensembleimportRandomForestClassifierfromsklearn。modelselectionimporttraintestsplitimportmatplotlib。pyplotasplt读取数据集dfpd。readcsv(data。csv)提取特征和标签Xdf。drop(label,axis1)ydf〔label〕将数据集拆分为训练集和测试集Xtrain,Xtest,ytrain,ytesttraintestsplit(X,y,testsize0。2,randomstate42)初始化随机森林分类器clfRandomForestClassifier(nestimators100,randomstate42)训练模型clf。fit(Xtrain,ytrain)计算准确率accuracyclf。score(Xtest,ytest)print(Accuracy:,accuracy)绘制特征重要性图importancesclf。featureimportancesindicesnp。argsort(importances)〔::1〕plt。figure()plt。title(FeatureImportances)plt。bar(range(X。shape〔1〕),importances〔indices〕,colorr,aligncenter)plt。xticks(range(X。shape〔1〕),indices)plt。xlim(〔1,X。shape〔1〕〕)plt。show() 显示不完整可以让它继续 看不到data。csv,不便于学习,我们让它给个可以查看数据的例子 importnumpyasnpimportpandasaspdfromsklearn。ensembleimportRandomForestClassifierfromsklearn。modelselectionimporttraintestsplitimportmatplotlib。pyplotasplt读取数据集urlhttps:raw。githubusercontent。comjbrownleeDatasetsmasterpimaindiansdiabetes。data。csvnames〔preg,plas,pres,skin,test,mass,pedi,age,class〕dfpd。readcsv(url,namesnames)提取特征和标签Xdf。drop(class,axis1)ydf〔class〕将数据集拆分为训练集和测试集Xtrain,Xtest,ytrain,ytesttraintestsplit(X,y,testsize0。2,randomstate42)初始化随机森林分类器clfRandomForestClassifier(nestimators100,randomstate42)训练模型clf。fit(Xtrain,ytrain)计算准确率accuracyclf。score(Xtest,ytest)print(Accuracy:,accuracy)绘制特征重要性图importancesclf。featureimportancesindicesnp。argsort(importances)〔::1〕plt。figure()plt。title(FeatureImportances)plt。bar(range(X。shape〔1〕),importances〔indices〕,colorr,aligncenter)plt。xticks(range(X。shape〔1〕),indices)plt。xlim(〔1,X。shape〔1〕〕)plt。show() 测试 将上面的代码复制到jupyternotebook中,可以成功运行,测试结果如下 体验Nice!进阶,mpapi做材料分析 结合一点前面学的mpapi做个材料分析 从MaterialsProject网站选择NaMgAl元素的材料,测试nisites与形成能的关系,看一下能否从nsites预测形成能APIKEYAPIKEY这里输入自己的APIKEY可以去MaterialProject官网注册获取导入机器学习库以及mpapi库,然后从官网获取含有NaMgAl元素的化合物fromsklearn。modelselectionimporttraintestsplitfromsklearn。ensembleimportRandomForestRegressorfrommpapi。clientimportMPResterwithMPRester(APIKEY)asmpr:docsmpr。summary。search(elements〔Na,Mg,Al〕,fields〔formationenergyperatom,nsites〕) 可以看到,搜索到了35个材料用搜索到的35个数据,我们使用机器学习拟合,看看结果 读取数据,X为nisites的变量,y为平均原子形成能数据,取20作为测试X〔〔docs〔i〕。nsites〕foriinrange(len(docs))〕y〔docs〔i〕。formationenergyperatomforiinrange(len(docs))〕Xtrain,Xtest,ytrain,ytesttraintestsplit(X,y,testsize0。2)TrainarandomforestregressoronthetrainingdataregressorRandomForestRegressor()regressor。fit(Xtrain,ytrain)scoreregressor。score(Xtest,ytest)predictionsregressor。predict(Xtest)print(fTestscore:{score:。2f})绘图importmatplotlib。pyplotaspltPlotthepredictedvaluesagainsttheactualvaluesplt。scatter(ytest,predictions)plt。xlabel(Actualvalues)plt。ylabel(Predictedvalues)plt。title(Randomforestregression)plt。show() 可以看到,结果很不理想,不过没关系,我们也可以预料到,因为格点数跟平均形成能本身也不会有啥关系,但是我们通过这个案例,基本可以入门机器学习分析材料。