建模 json 使用说明

阅读(2704) 标签: 建模, json,

执行建模操作前,通常需要进行数据来源、变量、模型选项、模型文件保存路径、是否预处理等建模参数的相关配置,执行建模时,这些建模参数将会以json串的形式保存到mcf文件中,该章节将详细介绍建模相关json中的参数含义。

 Json参数说明

{

"modelType" //数据来源类型,固定为0,表示本地文件

"modelMetaData": //元数据{

"fieldList": //变量列表 [

{

"varName"//变量名称

"dataType" //变量类型:0 缺省自动检测,1 二值变量,2 单值变量,3 分类变量,11 数值变量,12 计数变量:变量取值为整数,13 时间日期变量,20 ID21 长文本类型 (注:自动检测可能出错,调用时注意)

"isTarget" //是否目标变量,T/F型属性,true表示是,false表示不是。只能有一个变量为true

"isActionable" //是否可操作,T/F型属性,通常默认为true

"isSource" //选出的非目标的其它变量,T/F型属性,通常默认为true

"importance"//变量重要度,建模之后返回,范围0-1之间

"isComputeCol"//是否衍生变量(列),T/F型属性

"isTypeDefined" //用户是否编辑过数据类型,T/F型属性

"isSourceDefined" // 用户是否编辑过变量选出状态,T/F型属性

},

  //下一个变量

  //

]

"modelFile" //pcf模型文件保存路径

"dsType" //导入文件的类型,目前只有0txt/csv类型

"dsConfig" //导入文件配置 {

"srcFilePath" //源文件路径

"hasTitle" // 第一行是否是标题

"fieldNames"//变量名称

"fieldTypes" //变量类型

"useDisp" // 是否使用显示行数

"dispNumber" //显示行数

"charset" //字符集设置

"separator" //分隔符

"isEscape"//如果字段串外有引号则先剥离,包括标题部分

"isTransQuota" //是否使用双引号作为转义字符

"checkValid" //检查字段数与首行不同的行

"skipErrorRow" //跳过检查出错的行

"useTop" //是否导入前N

"topNumber" //导入前N

"useBlock"// 是否分块导入

"blockIndex" //分块号

"blockCount" //总块数

"dateFormat" //日期格式

"timeFormat" // 时间格式

"dateTimeFormat" //日期时间格式

"missingFormat" //缺失值定义

"language" // locale的语言

"country" // locale的国家

"variant" //locale的变量

"formats" //字段的日期时间格式列表

},

"needPrepare" //是否需要数据预处理

"parallelNumber" //预处理并行数

"isIntelligenceImpute" //是否智能填补

"isResample" //是否重抽样建模

"balanceParams" //平衡抽样比率,int[],目标变量的配平参数,参数范围1-9[1]表示多数样本和少数样本的抽样比率为11

"advanceSelect" //是否使用高级变量选择,高级变量选择时预处理输出全数据

"optimalParam" //是否使用最优参数搜索

"resampleMultiple" //抽样倍数

"testDataPercent" //测试数据百分比1%-99%

"ensembleMethod" //模型组合策略:best_n(最优模型策略),simple(用简单模型组合),最优模型策略表示选出最佳的前几个模型进行组合,计算量较多。简单模型组合表示不进行筛选,而是将所有定义出的模型组合到一起,计算量较少。

"resampleBestN" // is_resample=true时,执行重抽样后的多模型筛选方式,同best_n,建议默认 3

"resampleNumber" //重抽样次数

"ensembleFunc" //模型组合函数

"ensembleBestN" //模型组合最优数

"dataBalances" //目标变量数据比例(多数/少数)float[]

"chunkSize" //预测集分批数

"adjustProb" //模型预测结果是否执行校正

"fixedSeed" //是否固定种子

"randomState" //随机种子,控制建模随机性,控制建模随机性。默认是0。当设为空值时,两次运行会得到随机的结果。当设为整数n时,两次运行n值相同,会得到相同的结果;n值不同,会得到不同的结果。

"classModels": //分类模型参数列表

[

"{\"modelName\"//模型名称,\"count\"//抽样次数}",

]

"regressionModels": //回归模型参数列表

[

"{\"modelName\"//模型名称,\"count\"//抽样次数}",

"isEscape" //导入数据时剥离引号

"classCategoryCount"//分类统计图分类数

"numberCategoryCount"//数值统计图分段数

"groupMaxCount"//分组最大记录数

"groupMinCount"//分组最小记录数

"accuracySetting" //阈值显示设置 {

"accuracyMin" //阈值最小值

"accuracyMax" //阈值最大值

"accuracyCount" //分段数

}

],

"srcFilePath" //mtx文件保存路径

"rowCount" //行数

"colCount" //列数

}

}

示例

本文档以泰坦尼克生存预测的数据举例,描述建模过程json文件如何使用。

泰坦尼克的数据示例如下图:

建模的字段有:

PassengerId, Survied, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked 共计12个变量

目标变量为Survied表示乘客的生存状态,属于二值变量,1表示生,0表示死

 

使用该数据建模的json写法如下:

{

"modelType": 0,  

"modelMetaData":{

"fieldList": [

{

"varName": "PassengerId",

"dataType":20, // PassengerIdID,所以为20

"isTarget":false,

"isActionable": true,

"isSource": true,

"importance": 0 ,

"isComputeCol": false,

"isTypeDefined": false,

"isSourceDefined": false 

},{

"varName": "Survived",

"dataType": 1,  //Survived 是二值变量,所以为1   

"isTarget": true, //Survived 是目标变量

"isActionable": true,

"isSource": true,

" importance ": 0

"isComputeCol": false,

"isTypeDefined": false,

"isSourceDefined": false

},{

"varName": "Pclass",

"dataType": 3, // Pclass分类变量

"isTarget": false,

"isActionable": true,

"isSource": true,

"importance": 0 ,

"isComputeCol": false,

"isTypeDefined": false,

"isSourceDefined": false

},{

"varName": "Age",

"dataType": 11, //数值变量

"isTarget": false,

"isActionable": true,

"isSource": true,     

"importance": 0,

"isComputeCol": false,

"isTypeDefined": false,

"isSourceDefined": false

},{

  //下一个变量

  //

}],

"modelFile": "C:\\Program Files\\raqsoft\\ymodel\\documents\\csv\\train.pcf",

"dsType": 0,

"dsConfig": {

"srcFilePath":"C:\\ProgramFiles\\raqsoft\\ymodel\\documents\\csv\\train.csv",

"hasTitle": true,

"fieldNames": ["PassengerId", "Survived", "Pclass", "Name", "Sex", "Age", "SibSp", "Parch", "Ticket", "Fare", "Cabin", "Embarked"],

"fieldTypes": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

"useDisp": false,

"dispNumber": 0,

"charset": "GBK",

"separator": ",",

"isEscape": true,

"isTransQuota": false,

"checkValid": true,

"skipErrorRow": false,

"useTop": false,

"topNumber": 10000,

"useBlock": false,

"blockIndex": 1,

"blockCount": 1,

"dateFormat": "yyyy/MM/dd",

"timeFormat": "HH:mm:ss",

"dateTimeFormat": "yyyy/MM/dd HH:mm:ss", 

"missingFormat": "NULL|N/A",

"language": "zh",

"country": "CN",

"variant": "",

"formats": ["", "", "", "", "", "", "", "", "", "", "", ""]

},

"needPrepare": true,

"parallelNumber": 1,

"isIntelligenceImpute": true,

"isResample": true,

"balanceParams": [1],

"advanceSelect": false,

"optimalParam": false,

"resampleMultiple": 150,

"testDataPercent": 0,

"ensembleMethod": "best_n",

"resampleBestN": 3,

"resampleNumber": 5,

"ensembleFunc": "np.mean",

"ensembleBestN": 0,

"dataBalances": [1.5325202941894531],

"chunkSize": 1000000,

"adjustProb": true,

"fixedSeed": true,

"randomState": 0,

"classModels":[

"{\"modelName\"//模型名称:\"TreeClassification\",\"count\"//抽样次数:1}",

"{\"modelName\":\"GBDTClassification\",\"count\":1}",

"{\"modelName\":\"RFClassification\",\"count\":1}",

"{\"modelName\":\"LogicClassification\",\"count\":1}",

"{\"modelName\":\"RidgeClassification\",\"count\":1}",

"{\"modelName\":\"FNNClassification\",\"count\":1}",

"{\"modelName\":\"XGBClassification\",\"count\":1}"

],

"regressionModels": //回归模型参数列表[

"{\"modelName\":\"TreeRegression\",\"count\":1}",

"{\"modelName\":\"GBDTRegression\",\"count\":1}",

"{\"modelName\":\"RFRegression\",\"count\":1}",

"{\"modelName\":\"LRegression\",\"count\":1}",

"{\"modelName\":\"LassoRegression\",\"count\":1}",

"{\"modelName\":\"ENRegression\",\"count\":1}",

"{\"modelName\":\"RidgeRegression\",\"count\":1}",

"{\"modelName\":\"FNNRegression\",\"count\":1}",

"{\"modelName\":\"XGBRegression\",\"count\":1}"

],

"isEscape": true,

"classCategoryCount": 15,

"numberCategoryCount": 24,

"groupMaxCount": 3000000,

"groupMinCount": 1000000,

"accuracySetting": {

"accuracyMin": 0.05,

"accuracyMax": 0.95,

"accuracyCount": 20

}

},

"srcFilePath": "train3.mtx", mtx

"rowCount": 623,

"colCount": 12

}