每日记录,2022年1月7日

1. 在牛客上刷题总结

  • Lambda表达式
    语法: lambda 参数列表: Lambda体
    注意:python中Lambda体只能是一条语句,计算结果返回给Lambda表达式。
    下面以一段代码为例:
def calculate_fun(opr):
    if opr == '+':
        return lambda a, b: a + b
    else:
        return lambda a, b: a - b

f1 = calculate_fun('+')
f2 = calculate_fun('-')
print(f1)

print(f1(10, 5))
print(f2(10, 5))

运行结果为:
运行结果

  • 三大基础函数
    1.过滤操作filter( ):对迭代对象的元素进行过滤。
    [语法]: filter(function, iterable)
    下面以一段代码为例:
users = ['Tony', 'Tom', 'Jerry', 'dog']
users_filter = filter(lambda u: u.startswith('T'), users)
print(users_filter)
print(list(users_filter))

  运行结果为:<filter object at 0x000001DE14603EB0>, [‘Tony’, ‘Tom’]
  注意:此处是过滤保留满足函数条件的对象。
  2.映射操作map( ):迭代对象的元素逐一传入函数中,在函数中实现变换。
  [语法]: map(function, iterable)
  下面以一段代码为例:

users = ['Tony', 'Tom', 'Jerry', 'dog']
users_map = map(lambda u: u.lower(), users)
print(list(users_map))

  运行结果为:[‘tony’, ‘tom’, ‘jerry’, ‘dog’]

   3.聚合操作reduce( ):将多个数据聚合起来输出单个数据。
   [语法]: reduce(function, iterable[, initializer]) 其中initializer为初始值。
  下面以一段代码为例:

from functools import reduce
a = (1, 2, 3, 4)
a_reduce = reduce(lambda acc, i: acc + i, a)
print(a_reduce)
a_reduce = reduce(lambda acc, i: acc + i, a, 2)
print(a_reduce)

运行结果为:10, 12.

2. 学习机器学习课程总结

  学习了一些关于多项式回归以及模型泛化的知识点。下面简要的总结梳理一下。

  • 多项式回归
      相比与线性回归,多项式回归主要是用于解决非线性回归问题。首先在原有特征变量的基础上,一次增加高阶的变量(比如: x 2 x^2 x2 x 3 x^3 x3等)。然后,采用线性回归的方式确定各个特征变量的参数,进而实现对非线性映射关系的拟合。
    优点:可以更好的拟合非线性映射关系
    缺点:随着模型复杂程度的增加模型训练会产生过拟合现象。
    【关于python中sci-kit learn中的实现】:通常采用Pipeline的方式实现。下面展示下相应的代码:
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_squared_error

# 生成虚拟数据用于测试
x = np.random.uniform(-3, 3, size=100)
X = x.reshape(-1, 1)
y = 0.8 * X**2 + 3 * X + 2 + np.random.normal(0, 1, 100)


# 实例化管道
poly_reg = Pipeline([
    ("poly", PolynomialFeatures(degree=2)),
    ("std_scaler", StandardScaler()),
    ("lin_reg", LinearRegression())
])

# 利用管道拟合
poly_reg.fit(X, y)
y_predict = poly_reg.predict(X)
print(mean_squared_error(y, y_predict))

运行结果为:1.4013375864086192e-29

  • 过拟合与欠拟合
    过拟合和欠拟合分别对应训练模型的两种状态。过拟合是指模型对训练样本的拟合很好,但模型的复杂程度很高,从而导致模型的测试误差很大。欠拟合是指模型训练误差很大,模型没法很好的拟合训练样本。
  • 验证数据集与交叉验证
    验证数据集是随机从训练数据集中取出的一部分数据,用于调节模型参数,从而里面模型过拟合。交叉验证则是平均将训练集分成若干份,每次取一份作为验证数据集,其余作为训练数据集验证模型参数。优点:更加合理的确定参数,有效的解决随机性带来的问题。缺点是耗时。
  • 偏差与方差的平衡
    偏差是可能是模型欠拟合等因素导致的一种误差,方差则是可能由于模型过拟合导致的误差。如何协调偏差方差是机器学习的一个重点任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值