我正在尝试构建Regression
模型,并且正在寻找一种方法来检查特征和目标变量之间是否存在任何关联?
这只是我的示例dataset
Loan_ID Gender Married Dependents Education Self_Employed ApplicantIncome\
0 LP001002 Male No 0 Graduate No 5849
1 LP001003 Male Yes 1 Graduate No 4583
2 LP001005 Male Yes 2 Graduate Yes 3000
3 LP001006 Male Yes 0 Not Graduate No 2583
4 LP001008 Male No 3+ Graduate No 6000
CoapplicantIncome LoanAmount Loan_Amount_Term Credit_History Area Loan_Status
0.0 123 360.0 1.0 Urban Y
1508.0 128.0 360.0 1.0 Rural N
0.0 66.0 360.0 1.0 Urban Y
2358.0 120.0 360.0 1.0 Urban Y
0.0 141.0 360.0 1.0 SemiUrban Y
我正在尝试根据上述可用功能来预测LoanAmount
列。
我只想看看功能和目标变量之间是否存在关联。我尝试过LinearRegression
,GradientBoostingRegressor
,但几乎没有达到0.30 - 0.40%
的准确性。
我对算法,参数等有何建议,可以用来进行更好的预测?
答案 0 :(得分:0)
使用pandas,您可以轻松检查要素与目标列之间的线性相关性:
IEnumerable<string> WordWrap(string text, int width)
{
const string forcedBreakZonePattern = @"\n";
const string normalBreakZonePattern = @"\s+|(?<=[-,.;])|$";
var forcedZones = Regex.Matches(text, forcedBreakZonePattern).Cast<Match>().ToList();
var normalZones = Regex.Matches(text, normalBreakZonePattern).Cast<Match>().ToList();
int start = 0;
while (start < text.Length)
{
var zone =
forcedZones.Find(z => z.Index >= start && z.Index <= start + width) ??
normalZones.FindLast(z => z.Index >= start && z.Index <= start + width);
if (zone == null)
{
yield return text.Substring(start, width);
start += width;
}
else
{
yield return text.Substring(start, zone.Index - start);
start = zone.Index + zone.Length;
}
}
}
请记住,那将是线性相关。
答案 1 :(得分:0)
对于ApplicantIncome
和CoapplicantIncome
之类的连续变量,如果您只想查找相关性,则可以使用一些相关系数。最常见的是用于线性相关的Pearson和用于非线性相关的Spearman或Kendall tau。
关于实现,这些可以在pandas.DataFrame.corr()的熊猫中找到(我真的建议您使用熊猫,如果您还没有的话。)
关于连续关联的分类,不存在关联。您只能测量关联。
我没有足够的经验来使用这些工具,但是我知道您可以使用ANOVA或Kruskal-Wallis。如果愿意,请参考this answer。
(我建议将此问题移至“交叉验证”。)