李宏毅机器学习——课后作业2

要求:

运用逻辑回归的方法,根据性别、年龄、学历、婚姻状况、从事的行业等特征,预测居民的个人收入是否大于5万美元。

代码介绍:

1.加载库函数,设置路径

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)

#添加文件路径
X_train_fpath = 'X_train'
Y_train_fpath = 'Y_train'
X_test_fpath = 'X_test'
output_fpath = 'output_{}.csv'	#用于测试集的预测输出

2.加载数据

#加载数据
with open(X_train_fpath) as f:
    next(f)
    X_train = np.array([line.strip('\n').split(',')[1:] for line in f], dtype = float)
with open(Y_train_fpath) as f:
    next(f)
    Y_train = np.array([line.strip('\n').split(',')[1] for line in f], dtype = float)
with open(X_test_fpath) as f:
    next(f)
    X_test = np.array([line.strip('\n').split(',')[1:] for line in f], dtype = float)

函数介绍:

该函数功能将数据去掉第一行,去掉第一列,然后按照’,'进行数据分割,并将数据类型变成float。

函数应用举例:

NPARRAY.txt文件如下:

1,2,3
4,5,6
7,8,9

NPARRAY.py文件如下:

import numpy as np

NPARRAY_FPATH='NPARRAY.TXT'

with open(NPARRAY_FPATH) as f:
    a=np.array([line.strip('\n').split(',')[1:] for line in f], dtype = float)
    print(a)

结果如下:

[[2. 3.]
 [5. 6.]
 [8. 9.]]

加上next(f)后结果如下:

[[5. 6.]
 [8. 9.]]

3.进行数据标准化

#数据标准化(Z标准化)
def _normalize(X, train = True, specified_column = None, X_mean = None, X_std = None):
    # 参数:
    #     X: 需要标准化的数据
    #     train: 处理training data时为'True',处理testing data时为‘False'.
    #     specific_column: 数据中需要标准化的列(feature),所有列都需要标准化时为None
    #     X_mean:数据的均值 
    #     X_std: 数据的标准差
    # 结果:
    #     X: 标准化后的数据
    #     X_mean:数据的均值 
    #     X_std: 数据的标准差
    if specified_column == None:
        specified_column = np.arange(X.shape[1])
    if train:
        X_mean = np.mean(X[:, specified_column] ,0).reshape(1, -1)
        X_std  = np.std(X[:, specified_column], 0).reshape(1, -1)

    X[:,specified_column] = (X[:, specified_column] - X_mean) / (X_std + 1e-8)
     
    return X, X_mean, X_std

X_train, X_mean, X_std = _normalize(X_train, train = True)
X_test, _, _= _normalize(X_test, train = False, specified_column = None, X_mean = X_mean, X_std = X_std)

函数介绍:

  1. Z标准化:
    在这里插入图片描述
    图片来源于:数据规范化(归一化)、及Z-score标准化
  2. shape函数
    函数功能:读取矩阵长度
    函数举例:在这里插入图片描述
  3. reshape函数:
    函数功能:
    1.当原始数组A[4,6]为二维数组,代表4行6列。
    A.reshape(-1,8):表示将数组转换成8列的数组,具体多少行我们不知道,所以参数设为-1。用我们的数学可以计算出是3行8列
    2当原始数组A[4,6]为二维数组,代表4行6列。
    A.reshape(3,-1):表示将数组转换成3行的数组,具体多少列我们不知道,所以参数设为-1。用我们的数学可以计算出是3行8列
    reshape函数不会改变原数组
    函数举例:
    在这里插入图片描述
  4. arange函数
    函数功能࿱
  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值