🎯要点
- 🎯数据元素:
- 🖊变量处理 | 🖊代码多重调用 | 🖊集合:数组、字典、元组和命名元组 | 🖊矢量化代码:广播 | 🖊字符串处理 | 🖊提取HTTP查询,解析JSON数据,丢失值绘图和插值 | 🖊处理压缩文件,CSV文件,Apache Arrow数据,SQLite数据库,计算和可视化汇总统计数据 | 🖊数据帧处理,创建本地线性回归模型,可视化模型预测 | 🖊交互R语言,绘制矩阵相关性 | 🖊转换数据帧为其他类型 | 🖊提取压缩归档文件,分割整合变换数据帧,图形分析数据 | 🖊构建资产预测模型 | 🖊蒙特卡罗模拟期权定价。
- 🎯经济学几何级数学模型:
- 🖊资产负债表现金流价值估算,对比投资和政府支出对收益的影响 | 🖊马尔可夫链计算个人雇佣和失业的矩阵数据,确定信息:失业持续时间,何时失业,可能失业的概率 | 🖊帕累托分布模型计算财富分布不平等:洛伦兹曲线和基尼系数测量,工资收入和资产回报影响 | 🖊人才市场建模,推断求职者市场价值最大化策略 | 🖊个人跳槽预期建模,判断在职和离职状态下,对新工作机会的跳槽或选择预期 | 🖊失业人员重新就职建模,评估条件:薪资下降、失业补偿金、薪资构成分布 | 🖊职业选择建模,最大化预期工资流 | 🖊在职人员择业建模,评估投资目前职业与选择新职业资本回报 | 🖊制造业增长型贴现投资建模,价值迭代和时间迭代评估价值最大化策略 。
- 🎯机器学习:
- 🖊马尔可夫决策 | 🖊生成对抗网络
🍇Julia建立预测模型
我们将构建一个预测机器学习模型。
julia> Pkg.add(“ScikitLearn.jl”)
这个包是 Python scikit-learn 包的接口。使用这个包的有趣之处在于,您可以使用与 Python 中使用的相同的模型和功能。Sklearn 要求所有数据都是数字类型,所以让我们对数据进行标签编码,
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对类别进行编码。我使用了带有分类数据的列索引。
接下来,我们将导入所需的模块。 然后我们将定义一个通用分类函数,它以模型作为输入并确定准确性和交叉验证分数。
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”制作第一个模型。
model = LogisticRegression()
predictor_var = [:Credit_History]
classification_model(model, predictor_var)
准确度:80.945% 交叉验证分数:80.957%。
决策树是建立预测模型的另一种方法。众所周知,它比逻辑回归模型提供更高的准确性。
model = DecisionTreeClassifier()
predictor_var = [:Credit_History, :Gender, :Married, :Education]
classification_model(model, predictor_var)
准确度:80.945% 交叉验证分数:76.656%
在这里,基于分类变量的模型无法产生影响,因为信用记录对它们起着主导作用。让我们尝试一些数值变量:
#We can try different combinations of variables:
predictor_var = [:Credit_History, :Loan_Amount_Term]
classification_model(model, predictor_var)
准确度:99.345% 交叉验证分数:72.009%。
随机森林是解决分类问题的另一种算法。随机森林的一个优点是我们可以使其适用于所有特征,并且它返回一个可用于选择特征的特征重要性矩阵。
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%。这是过度拟合的最终情况,可以通过两种方式解决:
- 减少预测变量的数量
- 调整模型参数
更新后的代码现在是
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%。