我正在进行一个机器学习项目,其中我为用户创建数据。数据包括他的年龄、工作年限、所在城市、业务类型和之前的贷款。数据的规则如下:
-
如果用户年龄合适,工作经验高,且从事良好业务,没有之前的贷款,那么将为他提供贷款
-
如果用户年龄合适,工作经验低,且从事良好业务,没有之前的贷款,那么将不提供贷款给他
-
如果用户年龄合适,工作经验高,且从事良好业务,有之前的贷款,那么将不提供贷款给他
就这样,我创建了一个包含所有这些数据的csv文件。下面是csv文件的链接
https://drive.google.com/file/d/1zhKr8YR951Yp-_mC23hROy7AgJoRpF0m/view?usp=sharing
此文件包含年龄、工作经验、城市(用2-9的值表示)、业务类型(用7-8的值表示)、之前的贷款(用0表示)和最终输出为YES(1)或NO(0)的数据
我使用以下代码来训练模型并预测用户是否会被允许贷款
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn import linear_modeldata = pd.read_csv("test.csv")data.head()X = data[['AGE', 'Experience', 'City', 'Business', 'Previous Loan']]Y = data["Output"]train = data[:(int((len(data) * 0.8)))]test = data[(int((len(data) * 0.8))):]regr = linear_model.LinearRegression()train_x = np.array(train[['AGE', 'Experience', 'City', 'Business', 'Previous Loan']])train_y = np.array(train["Output"])regr.fit(train_x, train_y)test_x = np.array(test[['AGE', 'Experience', 'City', 'Business', 'Previous Loan']])test_y = np.array(test["Output"])coeff_data = pd.DataFrame(regr.coef_, X.columns, columns=["Coefficients"])print(coeff_data)# Now let's do prediction of data:test_x2 = np.array([[41, 13, 9, 7, 0]]) # <- Here I am using some random values to test Y_pred = regr.predict(test_x2)
运行上述代码,我得到Y_pred
的值为0.01543
或0.884
,有时为1.034
。我无法理解这个输出的含义。最初我以为0.01543
可能意味着低置信度,因此不会提供贷款,而0.884
意味着高置信度,因此会提供贷款。这是正确的吗?请有人帮助我理解这一点。
请有人提供一些基本的机器学习示例链接,以帮助我开始处理这类场景。谢谢
回答:
不,你做错了!你必须输出1或0。因此,这是一个分类问题,而不是回归问题。使用像逻辑回归这样的分类算法来替代线性回归。
clf = linear_model.LogisticRegression()train_x = np.array(train[['AGE', 'Experience', 'City', 'Business', 'Previous Loan']])train_y = np.array(train["Output"])clf.fit(train_x, train_y)test_x = np.array(test[['AGE', 'Experience', 'City', 'Business', 'Previous Loan']])test_y = np.array(test["Output"])test_x2 = np.array([[41, 13, 9, 7, 0]])Y_pred = clf.predict(test_x2)
并且删除那行coeff_data
,因为它没有用。如果你想检查系数,直接使用以下代码:
clf.coef_
查看这个链接,它对使用机器学习进行贷款批准有很好的解释