学习大数据第四天:最小二乘法的Python实现

本文介绍了使用Python的numpy库实现最小二乘法的过程,详细讲解了numpy.poly1d和numpy.linspace的用法。
摘要由CSDN通过智能技术生成

1.import numpy as np

np.pi

3.141592653589793

2. np.poly1d

numpy.poly1d

class  numpy. poly1d ( c_or_rr=0variable=None ) [source]

A one-dimensional polynomial class.

A convenience class, used to encapsulate “natural” operations on polynomials so that said operations may take on their customary form in code (see Examples).

Parameters:

c_or_r : array_like

The polynomial’s coefficients, in decreasing powers, or if the value of the second parameter is True, the polynomial’s roots (values where the polynomial evaluates to 0). For example, poly1d([1, 2, 3])returns an object that represents x^2 + 2x + 3, whereas poly1d([1, 2, 3], True) returns one that represents (x-1)(x-2)(x-3) = x^3 - 6x^2 + 11x -6.

r : bool, optional

If True, c_or_r specifies the polynomial’s roots; the default is False.

variable : str, optional

Changes the variable used when printing p from x to variable (see Examples).

Examples

Construct the polynomial x^2 + 2x + 3:

>>>
>>> p = np.poly1d([1, 2, 3])
>>> print np.poly1d(p)
   2
1 x + 2 x + 3

Evaluate the polynomial at x = 0.5:

>>>
>>> p(0.5)
4.25

Find the roots:

>>>
>>> p.r
array([-1.+1.41421356j, -1.-1.41421356j])
>>> p(p.r)
array([ -4.44089210e-16+0.j,  -4.44089210e-16+0.j])

These numbers in the previous line represent (0, 0) to machine precision

Show the coefficients:

>>>
>>> p.c
array([1, 2, 3])

Display the order (the leading zero-coefficients are removed):

>>>
>>> p.order
2

Show the coefficient of the k-th power in the polynomial (which is equivalent to p.c[-(i+1)]):

>>>
>>> p[1]
2

Polynomials can be added, subtracted, multiplied, and divided (returns quotient and remainder):

>>>
>>> p * p
poly1d([ 1,  4, 10, 12,  9])
>>>
>>> (p**3 + 4) / p
(poly1d([  1.,   4.,  10.,  12.,   9.]), poly1d([ 4.]))

asarray(p) gives the coefficient array, so polynomials can be used in all functions that accept arrays:

>>>
>>> p**2 # square of polynomial
poly1d([ 1,  4, 10, 12,  9])
>>>
>>> np.square(p) # square of individual coefficients
array([1, 4, 9])

The variable used in the string representation of p can be modified, using the variable parameter:

>>>
>>> p = np.poly1d([1,2,3], variable='z')
>>> print p
   2
1 z + 2 z + 3

Construct a polynomial from its roots:

>>>
>>> np.poly1d([1, 2], True)
poly1d([ 1, -3,  2])

This is the same polynomial as obtained by:

>>>
>>> np.poly1d([1, -1]) * np.poly1d([1, -2])
poly1d([ 1, -3,  2])
3.np.linspace


numpy.linspace

numpy. linspace ( startstopnum=50endpoint=Trueretstep=Falsedtype=None ) [source]

Return evenly spaced numbers over a specified interval.

Returns num evenly spaced samples, calculated over the interval [startstop].

The endpoint of the interval can optionally be excluded.

Parameters:

start : scalar

The starting value of the sequence.

stop : scalar

The end value of the sequence, unless endpoint is set to False. In that case, the sequence consists of all but the last of num + 1 evenly spaced samples, so that stop is excluded. Note that the step size changes when endpoint is False.

num : int, optional

Number of samples to generate. Default is 50. Must be non-negative.

endpoint : bool, optional

If True, stop is the last sample. Otherwise, it is not included. Default is True.

retstep : bool, optional

If True, return (samplesstep), where step is the spacing between samples.

dtype : dtype, optional

The type of the output array. If dtype is not given, infer the data type from the other input arguments.

New in version 1.9.0.

Returns:

samples : ndarray

There are num equally spaced samples in the closed interval [start, stop] or the half-open interval[start, stop) (depending on whether endpoint is True or False).

step : float

Only returned if retstep is True

Size of spacing between samples.

See also

arange
Similar to  linspace, but uses a step size (instead of the number of samples).
logspace
Samples uniformly distributed in log space.

Examples

>>>
>>> np.linspace(2.0, 3.0, num=5)
    array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ])
>>> np.linspace(2.0, 3.0, num=5, endpoint=False)
    array([ 2. ,  2.2,  2.4,  2.6,  2.8])
>>> np.linspace(2.0, 3.0, num=5, retstep=True)
    (array([ 2.  ,  2.25,  2.5 ,  2.75,  3.  ]), 0.25)

Graphical illustration:

>>>
>>> import matplotlib.pyplot as plt
>>> N = 8
>>> y = np.zeros(N)
>>> x1 = np.linspace(0, 10, N, endpoint=True)
>>> x2 = np.linspace(0, 10, N, endpoint=False)
>>> plt.plot(x1, y, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.plot(x2, y + 0.5, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.ylim([-0.5, 1])
(-0.5, 1)
>>> plt.show()

(Source codepngpdf)

../../_images/numpy-linspace-1.png








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值