python学习:两个py文件间的函数调用
本例子是测试一些数据分析模型的R值,R值越接近1,表明该模型越适合分析该数据集.
本例子是在集成开发环境Aptana Studio 3 中创建 一个dataAnaly ,然后创建modelTest.py调用modelChose.py中的函数;在modelTest.py中需要import modelChose
格式:from 模块名 import 函数名1,函数名2....
'''
Created on 2015-1-19 @author: xuzhengzhu
'''
#input files
import xlrd,openpyxl
import pandas as pd
from sklearn import cross_validation
from dataAnaly import modelChose
from sklearn.metrics import r2_score
import numpy as np file=pd.ExcelFile('e:\\report.xlsx')
data=file.parse('Sheet1')
n=len(data)
#init data
x=data[['myjg','tjg']]
y=data['byjg']
models=['linear_model.SGDRegressor','GradientBoostingRegressor','RandomForestRegressor','AdaBoostRegressor','BaggingRegressor','linear_model.LinearRegression','linear_model.LogisticRegression','svm.svr','svm.NuSVR']
m=len(models)
k=10
R2=np.zeros(k)
z=2
count=0
modelCount=0
#lookup get model object
for modelCount in range(m-1):
clf=modelChose.modelChose(models[modelCount])
R2=np.zeros(k)
count=0
#lookup folds
for train_index,test_index in cross_validation.KFold(n-z,n_folds=k):
x_train,x_test=x.ix[train_index],x.ix[test_index]
y_train,y_test=y[train_index],y[test_index]
clf.fit(x_train,y_train)
y_predict=clf.predict(x_test);
r2=r2_score(y_test,y_predict)
#print 'computed %d time(s) and R square is:%f ' %(count+1,r2)
R2[count]=r2
count+=1 print 'model choose is :',models[modelCount],'the mean of R2 is :',np.mean(R2)
y_validation = clf.predict(x.ix[(n-z):n])
r2_val=r2_score(y.ix[(n-z):n],y_validation)
print 'model choose is :',models[modelCount],'the validation ser R square is :%f ',r2_val
#print pd.DataFrame({'y_true':y.ix[(n-z):n,],'y_validation':y_validation})
modelCount+=1
modelTest.py
'''
Created on 2015-1-19
@author: xuzhengzhu
'''
from sklearn.ensemble import BaggingRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import GradientBoostingRegressor
from sklearn import linear_model
from sklearn.svm import SVR
from sklearn.svm import NuSVR def modelChose(modelName):
if(cmp(modelName,'linear_model.SGDRegressor')==0):
#print modelName
clf = linear_model.SGDRegressor()
return clf
elif (cmp(modelName,'GradientBoostingRegressor')==0):
#print modelName
clf = GradientBoostingRegressor()
return clf
elif (cmp(modelName,'RandomForestRegressor')==0):
#print modelName
clf = RandomForestRegressor()
return clf
elif (cmp(modelName,'AdaBoostRegressor')==0):
#print modelName
clf = AdaBoostRegressor()
return clf
elif (cmp(modelName,'BaggingRegressor')==0):
#print modelName
clf = BaggingRegressor()
return clf
elif (cmp(modelName,'linear_model.LinearRegression')==0):
#print modelName
clf = linear_model.LinearRegression()
return clf
elif (cmp(modelName,'linear_model.LogisticRegression')==0):
#print modelName
clf = linear_model.LogisticRegression()
return clf
elif (cmp(modelName,'svm.svr')==0):
#print modelName
clf = SVR()
return clf
elif (cmp(modelName,'svm.NuSVR')==0):
#print modelName
clf = NuSVR()
return clf
else:
#print modelName,count,'dddd',models[count]
return 1
modelChose.py
测试结果:
model choose is : linear_model.SGDRegressor the mean of R2 is : -4.40149514377e+158
model choose is : linear_model.SGDRegressor the validation ser R square is :%f -1.69950873171e+175
model choose is : GradientBoostingRegressor the mean of R2 is : 0.06842532769
model choose is : GradientBoostingRegressor the validation ser R square is :%f -0.706828939678
model choose is : RandomForestRegressor the mean of R2 is : 0.0656454293629
model choose is : RandomForestRegressor the validation ser R square is :%f -1.62440546968
model choose is : AdaBoostRegressor the mean of R2 is : 0.0678670360111
model choose is : AdaBoostRegressor the validation ser R square is :%f -0.743162901308
model choose is : BaggingRegressor the mean of R2 is : 0.0913739612188
model choose is : BaggingRegressor the validation ser R square is :%f -1.11141498216
model choose is : linear_model.LinearRegression the mean of R2 is : 0.0976952970181
model choose is : linear_model.LinearRegression the validation ser R square is :%f -15.3631379961
model choose is : linear_model.LogisticRegression the mean of R2 is : -0.224099722992
model choose is : linear_model.LogisticRegression the validation ser R square is :%f 0.588585017836
model choose is : svm.svr the mean of R2 is : -0.243679440381
model choose is : svm.svr the validation ser R square is :%f -1.21033155027

python学习:两个py文件间的函数调用的更多相关文章
- Python包中 __init__.py文件的作用
原创连接 https://www.cnblogs.com/AlwinXu/p/5598543.html Python包中 __init__.py文件的作用 在创建python包的过程中,IDE都会在包 ...
- Python_架构、同一台电脑上两个py文件通信、两台电脑如何通信、几十台电脑如何通信、更多电脑之间的通信、库、端口号
1.架构 C/S架构(鼻祖) C:client 客户端 S:server 服务器 早期使用的一种架构,目前的各种app使用的就是这种架构,它的表现形式就是拥有专门的app. B/S架构(隶属于C/ ...
- python包中__init__.py文件的作用
python包中__init__.py文件的作用 __init__.py文件最常用的作用是标识一个文件夹是一个 python包. __init__.py文件的另一个作用是定义模糊导入时要导入的内容. ...
- [python IO学习篇] 补充.py文件是中文, .ini文件内容是中文
python 代码文件的编码.py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代 ...
- python学习两月总结_汇总大牛们的思想_值得收藏
下面是我汇总的我学习两个月python(version:3.3.2)的所有笔记 你可以访问:http://www.python.org获取更多信息 你也可以访问:http://www.cnblogs. ...
- python 学习笔记(十二) 文件和序列化
python 文件读写和序列化学习.## python文件读写`1 打开并且读取文件` f = open('openfile.txt','r') print(f.read()) f.close() ` ...
- Python学习(15)文件/IO
目录 Python 文件I/O 打印到屏幕 读取键盘输入 打开和关闭文件 File对象属性 文件定位 重命名和删除文件 Python的目录 Python 文件I/O 本章只讲述所有基本的的I/O函数, ...
- 编写python程序和运行.py文件的方法步骤
前提:已安装好 Subliume Test 3 且已经添加好python编译系统,已安装好python3.7 一.新建一个文本文档,将后缀名改为.py 二.使用 Subliume Test 3 打开该 ...
- python调用另一个.py文件中的类和函数
同一文件夹下的调用 1.调用函数 A.py文件如下:def add(x,y): print('和为:%d'%(x+y)) 在B.py文件中调用A.py的add函数如下: import AA.ad ...
随机推荐
- 20:django中的安全问题
本节主要是讲解django中的安全特性,讲述django是如何应对网站一般面临的安全性问题 跨站点脚本(XXS)攻击 跨站点脚本攻击是指一个用户把客户端脚本注入到其他用户的浏览器中.通常是通过在数据库 ...
- tk界面版股票下载
from tkinter import * import urllib.request import re,os import threading from tkinter import filedi ...
- python接口自动化13-data和json参数傻傻分不清【转载】
转至博客:上海-悠悠 前言 在发post请求的时候,有时候body部分要传data参数,有时候body部分又要传json参数,那么问题来了:到底什么时候该传json,什么时候该传data? 一.识别j ...
- hdu 2147(巴什博弈+NP图)
kiki's game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/10000 K (Java/Others)Total ...
- JAVA二叉树的创建以及各种功能的实现
直接上代码了,代码说得很清楚了 package BTree; public class BTree { private Node root; private class Node { private ...
- Linux搭建主从数据库服务器(主从复制)
配置主机数据库: 1.克隆linux操作系统 2.修改Linux系统主机IP地址 主机IP:192.168.247.150 从机IP:192.168.247.151 3.通过xshell连接Maste ...
- Linux下使进程在后台运行
怎么样使程序在后台执行 /////////////////// nohup ./nn > nn.log 2 > &1 & //////////// 方法有很多, ...
- LOJ #6279. 数列分块入门 3-分块(区间加法、查询区间内小于某个值x的前驱(比其小的最大元素))
#6279. 数列分块入门 3 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 3 题目描述 给 ...
- 堆管理之malloc和free分析
在win7 64环境下分析 1.malloc代码 int main(){ void *p = malloc(0xa8); memset(p, 'a', 0xa8); free(p); return 0 ...
- Java工具类-加密算法
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.securit ...