关键词Julia | 变量 | 数据 | 多重 | 集合 | 矢量 | HTTP | JSON | 绘图 | CSV文件 | 压缩 | 可视化 | 模型 | 建模 | R | 蒙特卡罗 | 模拟 | 经济 | 数学 | 资产 | 现金流 | 投资 | 支出 | 马尔可夫链 | 雇佣 | 失业 | 矩阵 | 概率 | 帕累托 | 财富 | 洛伦兹曲线 | 基尼系数 | 资产回报 | 失业补偿金 | 薪资 | 折扣 | 工资流水 | 策略 | 方程 | 贝尔曼方程 | 贪婪策略 | 欧拉方程 | 价值迭代 | 时间迭代 | 内生网格法 | 数值 | 算法
🏈 指点迷津 | Brief 🎯要点
🎯数据元素:
🖊变量处理 | 🖊代码多重调用 | 🖊集合:数组、字典、元组和命名元组 | 🖊矢量化代码:广播 | 🖊字符串处理 | 🖊提取HTTP查询,解析JSON数据,丢失值绘图和插值 | 🖊处理压缩文件,CSV文件,Apache Arrow数据,SQLite数据库,计算和可视化汇总统计数据 | 🖊数据帧处理,创建本地线性回归模型,可视化模型预测 | 🖊交互R语言,绘制矩阵相关性 | 🖊转换数据帧为其他类型 | 🖊提取压缩归档文件,分割整合变换数据帧,图形分析数据 | 🖊构建资产预测模型 | 🖊蒙特卡罗模拟期权定价。
🎯经济学几何级数学模型:
🖊资产负债表现金流价值估算,对比投资和政府支出对收益的影响 | 🖊马尔可夫链计算个人雇佣和失业的矩阵数据,确定信息:失业持续时间,何时失业,可能失业的概率 | 🖊帕累托分布模型计算财富分布不平等:洛伦兹曲线和基尼系数测量,工资收入和资产回报影响 | 🖊人才市场建模,推断求职者市场价值最大化策略 | 🖊个人跳槽预期建模,判断在职和离职状态下,对新工作机会的跳槽或选择预期 | 🖊失业人员重新就职建模,评估条件:薪资下降、失业补偿金、薪资构成分布 | 🖊职业选择建模,最大化预期工资流 | 🖊在职人员择业建模,评估投资目前职业与选择新职业资本回报 | 🖊制造业增长型贴现投资建模,价值迭代和时间迭代评估价值最大化策略 。
🍇Julia建立预测模型
我们将构建一个预测机器学习模型。
Copy julia > Pkg . add (“ScikitLearn . jl”)
这个包是 Python scikit-learn 包的接口。使用这个包的有趣之处在于,您可以使用与 Python 中使用的相同的模型和功能。Sklearn 要求所有数据都是数字类型,所以让我们对数据进行标签编码,
Copy using ScikitLearn
@sk_import preprocessing : LabelEncoder
labelencoder = LabelEncoder ()
categories = [ 2 3 4 5 6 12 13 ]
for col in categories
train[col] = fit_transform! (labelencoder , train[col])
end
以前用过sklearn的人会发现这段代码很熟悉,我们使用LabelEncoder对类别进行编码。我使用了带有分类数据的列索引。
接下来,我们将导入所需的模块。 然后我们将定义一个通用分类函数,它以模型作为输入并确定准确性和交叉验证分数。
Copy using ScikitLearn : fit! , predict , @sk_import , fit_transform!
@sk_import preprocessing : LabelEncoder
@sk_import model_selection : cross_val_score
@sk_import metrics : accuracy_score
@sk_import linear_model : LogisticRegression
@sk_import ensemble : RandomForestClassifier
@sk_import tree : DecisionTreeClassifier
function classification_model (model , predictors)
y = convert (Array , train[: 13 ])
X = convert (Array , train[predictors])
X2 = convert (Array , test[predictors])
fit! (model , X , y)
predictions = predict (model , X)
accuracy = accuracy_score (predictions , y)
println ( "\naccuracy: " , accuracy)
cross_score = cross_val_score (model , X , y , cv = 5 )
println ( "cross_validation_score: " , mean (cross_score))
fit! (model , X , y)
pred = predict (model , X2)
return pred
end
让我们制作第一个逻辑回归模型。 一种方法是将所有变量纳入模型,但这可能会导致过度拟合。 简而言之,采用所有变量可能会导致模型理解特定于数据的复杂关系,并且不能很好地概括。
因此,让我们用“Credit_History”制作第一个模型。
Copy model = LogisticRegression ()
predictor_var = [:Credit_History]
classification_model (model , predictor_var)
准确度:80.945% 交叉验证分数:80.957%。
决策树是建立预测模型的另一种方法。众所周知,它比逻辑回归模型提供更高的准确性。
Copy model = DecisionTreeClassifier ()
predictor_var = [:Credit_History , :Gender , :Married , :Education]
classification_model (model , predictor_var)
准确度:80.945% 交叉验证分数:76.656%
在这里,基于分类变量的模型无法产生影响,因为信用记录对它们起着主导作用。让我们尝试一些数值变量:
Copy #We can try different combinations of variables:
predictor_var = [:Credit_History , :Loan_Amount_Term]
classification_model (model , predictor_var)
准确度:99.345% 交叉验证分数:72.009%。
随机森林是解决分类问题的另一种算法。随机森林的一个优点是我们可以使其适用于所有特征,并且它返回一个可用于选择特征的特征重要性矩阵。
Copy model = RandomForestClassifier (n_estimators = 100 )
predictors = [:Gender , :Married , :Dependents , :Education ,
:Self_Employed , :Loan_Amount_Term , :Credit_History , :Property_Area ,
:LoanAmount]
classification_model (model , predictors)
准确度:100.000% 交叉验证分数:78.179%。
在这里我们看到训练集的准确率是 100%。这是过度拟合的最终情况,可以通过两种方式解决:
更新后的代码现在是
Copy model = RandomForestClassifier (n_estimators = 100 , min_samples_split = 25 , max_depth = 8 , n_jobs =- 1 )
predictors = [:ApplicantIncome, :CoapplicantIncome, :LoanAmount, :Credit_History, :Loan_Amoun_Term, :Gender, :Dependents]
classification_model (model , predictors)
准确度:82.410% 交叉验证分数:80.635%。