# Numerical arrays
import numpy as np
# Plotting.
import matplotlib.pyplot as plt
# Plots styles.
plt.style.use('ggplot')
# Plot size.
plt.rcParams['figure.figsize'] = (14, 10)
# Create two points.
x = np.array([4.0, 16.0])
y = np.array([6.0, 12.0])
x, y
(array([ 4., 16.]), array([ 6., 12.]))
# Plot the points.
plt.plot(x, y, 'ro')
# Give ourselves some space.
plt.xlim([-5.0, 25.0])
plt.ylim([-5.0, 25.0]);
# Plot a straight line.
l = np.linspace(-5.0, 25.0, 100)
plt.plot(l, 0.5 * l + 4.0, 'g--')
# Plot a straight line segment.
l = np.linspace(4.0, 16.0, 10)
plt.plot(l, 0.5 * l + 4.0, 'b-')
# Plot the points.
plt.plot(x, y, 'ro')
# Give ourselves some space.
plt.xlim([-5.0, 25.0])
plt.ylim([-5.0, 25.0]);
# Plot a straight line.
l = np.linspace(-3.0, 20.0, 100)
plt.plot(l, 0.5 * l + 4.0, 'g-')
# Plot a parabola.
plt.plot(l, 10.0 * (l**2) - 199.5 * l + 644.0, 'b-')
# Plot a cubic.
plt.plot(l, (l**3) - 20.0625 * l**2 + 65.75 * l, 'y-')
# Plot the points.
plt.plot(x, y, 'ro');
# Set up some x values.
x = np.linspace(0.0, 10.0, 1000)
x
array([ 0. , 0.01001001, 0.02002002, 0.03003003, 0.04004004, 0.05005005, 0.06006006, 0.07007007, 0.08008008, 0.09009009, 0.1001001 , 0.11011011, 0.12012012, 0.13013013, 0.14014014, 0.15015015, 0.16016016, 0.17017017, 0.18018018, 0.19019019, 0.2002002 , 0.21021021, 0.22022022, 0.23023023, 0.24024024, 0.25025025, 0.26026026, 0.27027027, 0.28028028, 0.29029029, 0.3003003 , 0.31031031, 0.32032032, 0.33033033, 0.34034034, 0.35035035, 0.36036036, 0.37037037, 0.38038038, 0.39039039, 0.4004004 , 0.41041041, 0.42042042, 0.43043043, 0.44044044, 0.45045045, 0.46046046, 0.47047047, 0.48048048, 0.49049049, 0.5005005 , 0.51051051, 0.52052052, 0.53053053, 0.54054054, 0.55055055, 0.56056056, 0.57057057, 0.58058058, 0.59059059, 0.6006006 , 0.61061061, 0.62062062, 0.63063063, 0.64064064, 0.65065065, 0.66066066, 0.67067067, 0.68068068, 0.69069069, 0.7007007 , 0.71071071, 0.72072072, 0.73073073, 0.74074074, 0.75075075, 0.76076076, 0.77077077, 0.78078078, 0.79079079, 0.8008008 , 0.81081081, 0.82082082, 0.83083083, 0.84084084, 0.85085085, 0.86086086, 0.87087087, 0.88088088, 0.89089089, 0.9009009 , 0.91091091, 0.92092092, 0.93093093, 0.94094094, 0.95095095, 0.96096096, 0.97097097, 0.98098098, 0.99099099, 1.001001 , 1.01101101, 1.02102102, 1.03103103, 1.04104104, 1.05105105, 1.06106106, 1.07107107, 1.08108108, 1.09109109, 1.1011011 , 1.11111111, 1.12112112, 1.13113113, 1.14114114, 1.15115115, 1.16116116, 1.17117117, 1.18118118, 1.19119119, 1.2012012 , 1.21121121, 1.22122122, 1.23123123, 1.24124124, 1.25125125, 1.26126126, 1.27127127, 1.28128128, 1.29129129, 1.3013013 , 1.31131131, 1.32132132, 1.33133133, 1.34134134, 1.35135135, 1.36136136, 1.37137137, 1.38138138, 1.39139139, 1.4014014 , 1.41141141, 1.42142142, 1.43143143, 1.44144144, 1.45145145, 1.46146146, 1.47147147, 1.48148148, 1.49149149, 1.5015015 , 1.51151151, 1.52152152, 1.53153153, 1.54154154, 1.55155155, 1.56156156, 1.57157157, 1.58158158, 1.59159159, 1.6016016 , 1.61161161, 1.62162162, 1.63163163, 1.64164164, 1.65165165, 1.66166166, 1.67167167, 1.68168168, 1.69169169, 1.7017017 , 1.71171171, 1.72172172, 1.73173173, 1.74174174, 1.75175175, 1.76176176, 1.77177177, 1.78178178, 1.79179179, 1.8018018 , 1.81181181, 1.82182182, 1.83183183, 1.84184184, 1.85185185, 1.86186186, 1.87187187, 1.88188188, 1.89189189, 1.9019019 , 1.91191191, 1.92192192, 1.93193193, 1.94194194, 1.95195195, 1.96196196, 1.97197197, 1.98198198, 1.99199199, 2.002002 , 2.01201201, 2.02202202, 2.03203203, 2.04204204, 2.05205205, 2.06206206, 2.07207207, 2.08208208, 2.09209209, 2.1021021 , 2.11211211, 2.12212212, 2.13213213, 2.14214214, 2.15215215, 2.16216216, 2.17217217, 2.18218218, 2.19219219, 2.2022022 , 2.21221221, 2.22222222, 2.23223223, 2.24224224, 2.25225225, 2.26226226, 2.27227227, 2.28228228, 2.29229229, 2.3023023 , 2.31231231, 2.32232232, 2.33233233, 2.34234234, 2.35235235, 2.36236236, 2.37237237, 2.38238238, 2.39239239, 2.4024024 , 2.41241241, 2.42242242, 2.43243243, 2.44244244, 2.45245245, 2.46246246, 2.47247247, 2.48248248, 2.49249249, 2.5025025 , 2.51251251, 2.52252252, 2.53253253, 2.54254254, 2.55255255, 2.56256256, 2.57257257, 2.58258258, 2.59259259, 2.6026026 , 2.61261261, 2.62262262, 2.63263263, 2.64264264, 2.65265265, 2.66266266, 2.67267267, 2.68268268, 2.69269269, 2.7027027 , 2.71271271, 2.72272272, 2.73273273, 2.74274274, 2.75275275, 2.76276276, 2.77277277, 2.78278278, 2.79279279, 2.8028028 , 2.81281281, 2.82282282, 2.83283283, 2.84284284, 2.85285285, 2.86286286, 2.87287287, 2.88288288, 2.89289289, 2.9029029 , 2.91291291, 2.92292292, 2.93293293, 2.94294294, 2.95295295, 2.96296296, 2.97297297, 2.98298298, 2.99299299, 3.003003 , 3.01301301, 3.02302302, 3.03303303, 3.04304304, 3.05305305, 3.06306306, 3.07307307, 3.08308308, 3.09309309, 3.1031031 , 3.11311311, 3.12312312, 3.13313313, 3.14314314, 3.15315315, 3.16316316, 3.17317317, 3.18318318, 3.19319319, 3.2032032 , 3.21321321, 3.22322322, 3.23323323, 3.24324324, 3.25325325, 3.26326326, 3.27327327, 3.28328328, 3.29329329, 3.3033033 , 3.31331331, 3.32332332, 3.33333333, 3.34334334, 3.35335335, 3.36336336, 3.37337337, 3.38338338, 3.39339339, 3.4034034 , 3.41341341, 3.42342342, 3.43343343, 3.44344344, 3.45345345, 3.46346346, 3.47347347, 3.48348348, 3.49349349, 3.5035035 , 3.51351351, 3.52352352, 3.53353353, 3.54354354, 3.55355355, 3.56356356, 3.57357357, 3.58358358, 3.59359359, 3.6036036 , 3.61361361, 3.62362362, 3.63363363, 3.64364364, 3.65365365, 3.66366366, 3.67367367, 3.68368368, 3.69369369, 3.7037037 , 3.71371371, 3.72372372, 3.73373373, 3.74374374, 3.75375375, 3.76376376, 3.77377377, 3.78378378, 3.79379379, 3.8038038 , 3.81381381, 3.82382382, 3.83383383, 3.84384384, 3.85385385, 3.86386386, 3.87387387, 3.88388388, 3.89389389, 3.9039039 , 3.91391391, 3.92392392, 3.93393393, 3.94394394, 3.95395395, 3.96396396, 3.97397397, 3.98398398, 3.99399399, 4.004004 , 4.01401401, 4.02402402, 4.03403403, 4.04404404, 4.05405405, 4.06406406, 4.07407407, 4.08408408, 4.09409409, 4.1041041 , 4.11411411, 4.12412412, 4.13413413, 4.14414414, 4.15415415, 4.16416416, 4.17417417, 4.18418418, 4.19419419, 4.2042042 , 4.21421421, 4.22422422, 4.23423423, 4.24424424, 4.25425425, 4.26426426, 4.27427427, 4.28428428, 4.29429429, 4.3043043 , 4.31431431, 4.32432432, 4.33433433, 4.34434434, 4.35435435, 4.36436436, 4.37437437, 4.38438438, 4.39439439, 4.4044044 , 4.41441441, 4.42442442, 4.43443443, 4.44444444, 4.45445445, 4.46446446, 4.47447447, 4.48448448, 4.49449449, 4.5045045 , 4.51451451, 4.52452452, 4.53453453, 4.54454454, 4.55455455, 4.56456456, 4.57457457, 4.58458458, 4.59459459, 4.6046046 , 4.61461461, 4.62462462, 4.63463463, 4.64464464, 4.65465465, 4.66466466, 4.67467467, 4.68468468, 4.69469469, 4.7047047 , 4.71471471, 4.72472472, 4.73473473, 4.74474474, 4.75475475, 4.76476476, 4.77477477, 4.78478478, 4.79479479, 4.8048048 , 4.81481481, 4.82482482, 4.83483483, 4.84484484, 4.85485485, 4.86486486, 4.87487487, 4.88488488, 4.89489489, 4.9049049 , 4.91491491, 4.92492492, 4.93493493, 4.94494494, 4.95495495, 4.96496496, 4.97497497, 4.98498498, 4.99499499, 5.00500501, 5.01501502, 5.02502503, 5.03503504, 5.04504505, 5.05505506, 5.06506507, 5.07507508, 5.08508509, 5.0950951 , 5.10510511, 5.11511512, 5.12512513, 5.13513514, 5.14514515, 5.15515516, 5.16516517, 5.17517518, 5.18518519, 5.1951952 , 5.20520521, 5.21521522, 5.22522523, 5.23523524, 5.24524525, 5.25525526, 5.26526527, 5.27527528, 5.28528529, 5.2952953 , 5.30530531, 5.31531532, 5.32532533, 5.33533534, 5.34534535, 5.35535536, 5.36536537, 5.37537538, 5.38538539, 5.3953954 , 5.40540541, 5.41541542, 5.42542543, 5.43543544, 5.44544545, 5.45545546, 5.46546547, 5.47547548, 5.48548549, 5.4954955 , 5.50550551, 5.51551552, 5.52552553, 5.53553554, 5.54554555, 5.55555556, 5.56556557, 5.57557558, 5.58558559, 5.5955956 , 5.60560561, 5.61561562, 5.62562563, 5.63563564, 5.64564565, 5.65565566, 5.66566567, 5.67567568, 5.68568569, 5.6956957 , 5.70570571, 5.71571572, 5.72572573, 5.73573574, 5.74574575, 5.75575576, 5.76576577, 5.77577578, 5.78578579, 5.7957958 , 5.80580581, 5.81581582, 5.82582583, 5.83583584, 5.84584585, 5.85585586, 5.86586587, 5.87587588, 5.88588589, 5.8958959 , 5.90590591, 5.91591592, 5.92592593, 5.93593594, 5.94594595, 5.95595596, 5.96596597, 5.97597598, 5.98598599, 5.995996 , 6.00600601, 6.01601602, 6.02602603, 6.03603604, 6.04604605, 6.05605606, 6.06606607, 6.07607608, 6.08608609, 6.0960961 , 6.10610611, 6.11611612, 6.12612613, 6.13613614, 6.14614615, 6.15615616, 6.16616617, 6.17617618, 6.18618619, 6.1961962 , 6.20620621, 6.21621622, 6.22622623, 6.23623624, 6.24624625, 6.25625626, 6.26626627, 6.27627628, 6.28628629, 6.2962963 , 6.30630631, 6.31631632, 6.32632633, 6.33633634, 6.34634635, 6.35635636, 6.36636637, 6.37637638, 6.38638639, 6.3963964 , 6.40640641, 6.41641642, 6.42642643, 6.43643644, 6.44644645, 6.45645646, 6.46646647, 6.47647648, 6.48648649, 6.4964965 , 6.50650651, 6.51651652, 6.52652653, 6.53653654, 6.54654655, 6.55655656, 6.56656657, 6.57657658, 6.58658659, 6.5965966 , 6.60660661, 6.61661662, 6.62662663, 6.63663664, 6.64664665, 6.65665666, 6.66666667, 6.67667668, 6.68668669, 6.6966967 , 6.70670671, 6.71671672, 6.72672673, 6.73673674, 6.74674675, 6.75675676, 6.76676677, 6.77677678, 6.78678679, 6.7967968 , 6.80680681, 6.81681682, 6.82682683, 6.83683684, 6.84684685, 6.85685686, 6.86686687, 6.87687688, 6.88688689, 6.8968969 , 6.90690691, 6.91691692, 6.92692693, 6.93693694, 6.94694695, 6.95695696, 6.96696697, 6.97697698, 6.98698699, 6.996997 , 7.00700701, 7.01701702, 7.02702703, 7.03703704, 7.04704705, 7.05705706, 7.06706707, 7.07707708, 7.08708709, 7.0970971 , 7.10710711, 7.11711712, 7.12712713, 7.13713714, 7.14714715, 7.15715716, 7.16716717, 7.17717718, 7.18718719, 7.1971972 , 7.20720721, 7.21721722, 7.22722723, 7.23723724, 7.24724725, 7.25725726, 7.26726727, 7.27727728, 7.28728729, 7.2972973 , 7.30730731, 7.31731732, 7.32732733, 7.33733734, 7.34734735, 7.35735736, 7.36736737, 7.37737738, 7.38738739, 7.3973974 , 7.40740741, 7.41741742, 7.42742743, 7.43743744, 7.44744745, 7.45745746, 7.46746747, 7.47747748, 7.48748749, 7.4974975 , 7.50750751, 7.51751752, 7.52752753, 7.53753754, 7.54754755, 7.55755756, 7.56756757, 7.57757758, 7.58758759, 7.5975976 , 7.60760761, 7.61761762, 7.62762763, 7.63763764, 7.64764765, 7.65765766, 7.66766767, 7.67767768, 7.68768769, 7.6976977 , 7.70770771, 7.71771772, 7.72772773, 7.73773774, 7.74774775, 7.75775776, 7.76776777, 7.77777778, 7.78778779, 7.7977978 , 7.80780781, 7.81781782, 7.82782783, 7.83783784, 7.84784785, 7.85785786, 7.86786787, 7.87787788, 7.88788789, 7.8978979 , 7.90790791, 7.91791792, 7.92792793, 7.93793794, 7.94794795, 7.95795796, 7.96796797, 7.97797798, 7.98798799, 7.997998 , 8.00800801, 8.01801802, 8.02802803, 8.03803804, 8.04804805, 8.05805806, 8.06806807, 8.07807808, 8.08808809, 8.0980981 , 8.10810811, 8.11811812, 8.12812813, 8.13813814, 8.14814815, 8.15815816, 8.16816817, 8.17817818, 8.18818819, 8.1981982 , 8.20820821, 8.21821822, 8.22822823, 8.23823824, 8.24824825, 8.25825826, 8.26826827, 8.27827828, 8.28828829, 8.2982983 , 8.30830831, 8.31831832, 8.32832833, 8.33833834, 8.34834835, 8.35835836, 8.36836837, 8.37837838, 8.38838839, 8.3983984 , 8.40840841, 8.41841842, 8.42842843, 8.43843844, 8.44844845, 8.45845846, 8.46846847, 8.47847848, 8.48848849, 8.4984985 , 8.50850851, 8.51851852, 8.52852853, 8.53853854, 8.54854855, 8.55855856, 8.56856857, 8.57857858, 8.58858859, 8.5985986 , 8.60860861, 8.61861862, 8.62862863, 8.63863864, 8.64864865, 8.65865866, 8.66866867, 8.67867868, 8.68868869, 8.6986987 , 8.70870871, 8.71871872, 8.72872873, 8.73873874, 8.74874875, 8.75875876, 8.76876877, 8.77877878, 8.78878879, 8.7987988 , 8.80880881, 8.81881882, 8.82882883, 8.83883884, 8.84884885, 8.85885886, 8.86886887, 8.87887888, 8.88888889, 8.8988989 , 8.90890891, 8.91891892, 8.92892893, 8.93893894, 8.94894895, 8.95895896, 8.96896897, 8.97897898, 8.98898899, 8.998999 , 9.00900901, 9.01901902, 9.02902903, 9.03903904, 9.04904905, 9.05905906, 9.06906907, 9.07907908, 9.08908909, 9.0990991 , 9.10910911, 9.11911912, 9.12912913, 9.13913914, 9.14914915, 9.15915916, 9.16916917, 9.17917918, 9.18918919, 9.1991992 , 9.20920921, 9.21921922, 9.22922923, 9.23923924, 9.24924925, 9.25925926, 9.26926927, 9.27927928, 9.28928929, 9.2992993 , 9.30930931, 9.31931932, 9.32932933, 9.33933934, 9.34934935, 9.35935936, 9.36936937, 9.37937938, 9.38938939, 9.3993994 , 9.40940941, 9.41941942, 9.42942943, 9.43943944, 9.44944945, 9.45945946, 9.46946947, 9.47947948, 9.48948949, 9.4994995 , 9.50950951, 9.51951952, 9.52952953, 9.53953954, 9.54954955, 9.55955956, 9.56956957, 9.57957958, 9.58958959, 9.5995996 , 9.60960961, 9.61961962, 9.62962963, 9.63963964, 9.64964965, 9.65965966, 9.66966967, 9.67967968, 9.68968969, 9.6996997 , 9.70970971, 9.71971972, 9.72972973, 9.73973974, 9.74974975, 9.75975976, 9.76976977, 9.77977978, 9.78978979, 9.7997998 , 9.80980981, 9.81981982, 9.82982983, 9.83983984, 9.84984985, 9.85985986, 9.86986987, 9.87987988, 9.88988989, 9.8998999 , 9.90990991, 9.91991992, 9.92992993, 9.93993994, 9.94994995, 9.95995996, 9.96996997, 9.97997998, 9.98998999, 10. ])
# Create y - note numpy's element-wise operations.
y = 5.0 * x + 2.0
# Look at y.
y
array([ 2. , 2.05005005, 2.1001001 , 2.15015015, 2.2002002 , 2.25025025, 2.3003003 , 2.35035035, 2.4004004 , 2.45045045, 2.5005005 , 2.55055055, 2.6006006 , 2.65065065, 2.7007007 , 2.75075075, 2.8008008 , 2.85085085, 2.9009009 , 2.95095095, 3.001001 , 3.05105105, 3.1011011 , 3.15115115, 3.2012012 , 3.25125125, 3.3013013 , 3.35135135, 3.4014014 , 3.45145145, 3.5015015 , 3.55155155, 3.6016016 , 3.65165165, 3.7017017 , 3.75175175, 3.8018018 , 3.85185185, 3.9019019 , 3.95195195, 4.002002 , 4.05205205, 4.1021021 , 4.15215215, 4.2022022 , 4.25225225, 4.3023023 , 4.35235235, 4.4024024 , 4.45245245, 4.5025025 , 4.55255255, 4.6026026 , 4.65265265, 4.7027027 , 4.75275275, 4.8028028 , 4.85285285, 4.9029029 , 4.95295295, 5.003003 , 5.05305305, 5.1031031 , 5.15315315, 5.2032032 , 5.25325325, 5.3033033 , 5.35335335, 5.4034034 , 5.45345345, 5.5035035 , 5.55355355, 5.6036036 , 5.65365365, 5.7037037 , 5.75375375, 5.8038038 , 5.85385385, 5.9039039 , 5.95395395, 6.004004 , 6.05405405, 6.1041041 , 6.15415415, 6.2042042 , 6.25425425, 6.3043043 , 6.35435435, 6.4044044 , 6.45445445, 6.5045045 , 6.55455455, 6.6046046 , 6.65465465, 6.7047047 , 6.75475475, 6.8048048 , 6.85485485, 6.9049049 , 6.95495495, 7.00500501, 7.05505506, 7.10510511, 7.15515516, 7.20520521, 7.25525526, 7.30530531, 7.35535536, 7.40540541, 7.45545546, 7.50550551, 7.55555556, 7.60560561, 7.65565566, 7.70570571, 7.75575576, 7.80580581, 7.85585586, 7.90590591, 7.95595596, 8.00600601, 8.05605606, 8.10610611, 8.15615616, 8.20620621, 8.25625626, 8.30630631, 8.35635636, 8.40640641, 8.45645646, 8.50650651, 8.55655656, 8.60660661, 8.65665666, 8.70670671, 8.75675676, 8.80680681, 8.85685686, 8.90690691, 8.95695696, 9.00700701, 9.05705706, 9.10710711, 9.15715716, 9.20720721, 9.25725726, 9.30730731, 9.35735736, 9.40740741, 9.45745746, 9.50750751, 9.55755756, 9.60760761, 9.65765766, 9.70770771, 9.75775776, 9.80780781, 9.85785786, 9.90790791, 9.95795796, 10.00800801, 10.05805806, 10.10810811, 10.15815816, 10.20820821, 10.25825826, 10.30830831, 10.35835836, 10.40840841, 10.45845846, 10.50850851, 10.55855856, 10.60860861, 10.65865866, 10.70870871, 10.75875876, 10.80880881, 10.85885886, 10.90890891, 10.95895896, 11.00900901, 11.05905906, 11.10910911, 11.15915916, 11.20920921, 11.25925926, 11.30930931, 11.35935936, 11.40940941, 11.45945946, 11.50950951, 11.55955956, 11.60960961, 11.65965966, 11.70970971, 11.75975976, 11.80980981, 11.85985986, 11.90990991, 11.95995996, 12.01001001, 12.06006006, 12.11011011, 12.16016016, 12.21021021, 12.26026026, 12.31031031, 12.36036036, 12.41041041, 12.46046046, 12.51051051, 12.56056056, 12.61061061, 12.66066066, 12.71071071, 12.76076076, 12.81081081, 12.86086086, 12.91091091, 12.96096096, 13.01101101, 13.06106106, 13.11111111, 13.16116116, 13.21121121, 13.26126126, 13.31131131, 13.36136136, 13.41141141, 13.46146146, 13.51151151, 13.56156156, 13.61161161, 13.66166166, 13.71171171, 13.76176176, 13.81181181, 13.86186186, 13.91191191, 13.96196196, 14.01201201, 14.06206206, 14.11211211, 14.16216216, 14.21221221, 14.26226226, 14.31231231, 14.36236236, 14.41241241, 14.46246246, 14.51251251, 14.56256256, 14.61261261, 14.66266266, 14.71271271, 14.76276276, 14.81281281, 14.86286286, 14.91291291, 14.96296296, 15.01301301, 15.06306306, 15.11311311, 15.16316316, 15.21321321, 15.26326326, 15.31331331, 15.36336336, 15.41341341, 15.46346346, 15.51351351, 15.56356356, 15.61361361, 15.66366366, 15.71371371, 15.76376376, 15.81381381, 15.86386386, 15.91391391, 15.96396396, 16.01401401, 16.06406406, 16.11411411, 16.16416416, 16.21421421, 16.26426426, 16.31431431, 16.36436436, 16.41441441, 16.46446446, 16.51451451, 16.56456456, 16.61461461, 16.66466466, 16.71471471, 16.76476476, 16.81481481, 16.86486486, 16.91491491, 16.96496496, 17.01501502, 17.06506507, 17.11511512, 17.16516517, 17.21521522, 17.26526527, 17.31531532, 17.36536537, 17.41541542, 17.46546547, 17.51551552, 17.56556557, 17.61561562, 17.66566567, 17.71571572, 17.76576577, 17.81581582, 17.86586587, 17.91591592, 17.96596597, 18.01601602, 18.06606607, 18.11611612, 18.16616617, 18.21621622, 18.26626627, 18.31631632, 18.36636637, 18.41641642, 18.46646647, 18.51651652, 18.56656657, 18.61661662, 18.66666667, 18.71671672, 18.76676677, 18.81681682, 18.86686687, 18.91691692, 18.96696697, 19.01701702, 19.06706707, 19.11711712, 19.16716717, 19.21721722, 19.26726727, 19.31731732, 19.36736737, 19.41741742, 19.46746747, 19.51751752, 19.56756757, 19.61761762, 19.66766767, 19.71771772, 19.76776777, 19.81781782, 19.86786787, 19.91791792, 19.96796797, 20.01801802, 20.06806807, 20.11811812, 20.16816817, 20.21821822, 20.26826827, 20.31831832, 20.36836837, 20.41841842, 20.46846847, 20.51851852, 20.56856857, 20.61861862, 20.66866867, 20.71871872, 20.76876877, 20.81881882, 20.86886887, 20.91891892, 20.96896897, 21.01901902, 21.06906907, 21.11911912, 21.16916917, 21.21921922, 21.26926927, 21.31931932, 21.36936937, 21.41941942, 21.46946947, 21.51951952, 21.56956957, 21.61961962, 21.66966967, 21.71971972, 21.76976977, 21.81981982, 21.86986987, 21.91991992, 21.96996997, 22.02002002, 22.07007007, 22.12012012, 22.17017017, 22.22022022, 22.27027027, 22.32032032, 22.37037037, 22.42042042, 22.47047047, 22.52052052, 22.57057057, 22.62062062, 22.67067067, 22.72072072, 22.77077077, 22.82082082, 22.87087087, 22.92092092, 22.97097097, 23.02102102, 23.07107107, 23.12112112, 23.17117117, 23.22122122, 23.27127127, 23.32132132, 23.37137137, 23.42142142, 23.47147147, 23.52152152, 23.57157157, 23.62162162, 23.67167167, 23.72172172, 23.77177177, 23.82182182, 23.87187187, 23.92192192, 23.97197197, 24.02202202, 24.07207207, 24.12212212, 24.17217217, 24.22222222, 24.27227227, 24.32232232, 24.37237237, 24.42242242, 24.47247247, 24.52252252, 24.57257257, 24.62262262, 24.67267267, 24.72272272, 24.77277277, 24.82282282, 24.87287287, 24.92292292, 24.97297297, 25.02302302, 25.07307307, 25.12312312, 25.17317317, 25.22322322, 25.27327327, 25.32332332, 25.37337337, 25.42342342, 25.47347347, 25.52352352, 25.57357357, 25.62362362, 25.67367367, 25.72372372, 25.77377377, 25.82382382, 25.87387387, 25.92392392, 25.97397397, 26.02402402, 26.07407407, 26.12412412, 26.17417417, 26.22422422, 26.27427427, 26.32432432, 26.37437437, 26.42442442, 26.47447447, 26.52452452, 26.57457457, 26.62462462, 26.67467467, 26.72472472, 26.77477477, 26.82482482, 26.87487487, 26.92492492, 26.97497497, 27.02502503, 27.07507508, 27.12512513, 27.17517518, 27.22522523, 27.27527528, 27.32532533, 27.37537538, 27.42542543, 27.47547548, 27.52552553, 27.57557558, 27.62562563, 27.67567568, 27.72572573, 27.77577578, 27.82582583, 27.87587588, 27.92592593, 27.97597598, 28.02602603, 28.07607608, 28.12612613, 28.17617618, 28.22622623, 28.27627628, 28.32632633, 28.37637638, 28.42642643, 28.47647648, 28.52652653, 28.57657658, 28.62662663, 28.67667668, 28.72672673, 28.77677678, 28.82682683, 28.87687688, 28.92692693, 28.97697698, 29.02702703, 29.07707708, 29.12712713, 29.17717718, 29.22722723, 29.27727728, 29.32732733, 29.37737738, 29.42742743, 29.47747748, 29.52752753, 29.57757758, 29.62762763, 29.67767768, 29.72772773, 29.77777778, 29.82782783, 29.87787788, 29.92792793, 29.97797798, 30.02802803, 30.07807808, 30.12812813, 30.17817818, 30.22822823, 30.27827828, 30.32832833, 30.37837838, 30.42842843, 30.47847848, 30.52852853, 30.57857858, 30.62862863, 30.67867868, 30.72872873, 30.77877878, 30.82882883, 30.87887888, 30.92892893, 30.97897898, 31.02902903, 31.07907908, 31.12912913, 31.17917918, 31.22922923, 31.27927928, 31.32932933, 31.37937938, 31.42942943, 31.47947948, 31.52952953, 31.57957958, 31.62962963, 31.67967968, 31.72972973, 31.77977978, 31.82982983, 31.87987988, 31.92992993, 31.97997998, 32.03003003, 32.08008008, 32.13013013, 32.18018018, 32.23023023, 32.28028028, 32.33033033, 32.38038038, 32.43043043, 32.48048048, 32.53053053, 32.58058058, 32.63063063, 32.68068068, 32.73073073, 32.78078078, 32.83083083, 32.88088088, 32.93093093, 32.98098098, 33.03103103, 33.08108108, 33.13113113, 33.18118118, 33.23123123, 33.28128128, 33.33133133, 33.38138138, 33.43143143, 33.48148148, 33.53153153, 33.58158158, 33.63163163, 33.68168168, 33.73173173, 33.78178178, 33.83183183, 33.88188188, 33.93193193, 33.98198198, 34.03203203, 34.08208208, 34.13213213, 34.18218218, 34.23223223, 34.28228228, 34.33233233, 34.38238238, 34.43243243, 34.48248248, 34.53253253, 34.58258258, 34.63263263, 34.68268268, 34.73273273, 34.78278278, 34.83283283, 34.88288288, 34.93293293, 34.98298298, 35.03303303, 35.08308308, 35.13313313, 35.18318318, 35.23323323, 35.28328328, 35.33333333, 35.38338338, 35.43343343, 35.48348348, 35.53353353, 35.58358358, 35.63363363, 35.68368368, 35.73373373, 35.78378378, 35.83383383, 35.88388388, 35.93393393, 35.98398398, 36.03403403, 36.08408408, 36.13413413, 36.18418418, 36.23423423, 36.28428428, 36.33433433, 36.38438438, 36.43443443, 36.48448448, 36.53453453, 36.58458458, 36.63463463, 36.68468468, 36.73473473, 36.78478478, 36.83483483, 36.88488488, 36.93493493, 36.98498498, 37.03503504, 37.08508509, 37.13513514, 37.18518519, 37.23523524, 37.28528529, 37.33533534, 37.38538539, 37.43543544, 37.48548549, 37.53553554, 37.58558559, 37.63563564, 37.68568569, 37.73573574, 37.78578579, 37.83583584, 37.88588589, 37.93593594, 37.98598599, 38.03603604, 38.08608609, 38.13613614, 38.18618619, 38.23623624, 38.28628629, 38.33633634, 38.38638639, 38.43643644, 38.48648649, 38.53653654, 38.58658659, 38.63663664, 38.68668669, 38.73673674, 38.78678679, 38.83683684, 38.88688689, 38.93693694, 38.98698699, 39.03703704, 39.08708709, 39.13713714, 39.18718719, 39.23723724, 39.28728729, 39.33733734, 39.38738739, 39.43743744, 39.48748749, 39.53753754, 39.58758759, 39.63763764, 39.68768769, 39.73773774, 39.78778779, 39.83783784, 39.88788789, 39.93793794, 39.98798799, 40.03803804, 40.08808809, 40.13813814, 40.18818819, 40.23823824, 40.28828829, 40.33833834, 40.38838839, 40.43843844, 40.48848849, 40.53853854, 40.58858859, 40.63863864, 40.68868869, 40.73873874, 40.78878879, 40.83883884, 40.88888889, 40.93893894, 40.98898899, 41.03903904, 41.08908909, 41.13913914, 41.18918919, 41.23923924, 41.28928929, 41.33933934, 41.38938939, 41.43943944, 41.48948949, 41.53953954, 41.58958959, 41.63963964, 41.68968969, 41.73973974, 41.78978979, 41.83983984, 41.88988989, 41.93993994, 41.98998999, 42.04004004, 42.09009009, 42.14014014, 42.19019019, 42.24024024, 42.29029029, 42.34034034, 42.39039039, 42.44044044, 42.49049049, 42.54054054, 42.59059059, 42.64064064, 42.69069069, 42.74074074, 42.79079079, 42.84084084, 42.89089089, 42.94094094, 42.99099099, 43.04104104, 43.09109109, 43.14114114, 43.19119119, 43.24124124, 43.29129129, 43.34134134, 43.39139139, 43.44144144, 43.49149149, 43.54154154, 43.59159159, 43.64164164, 43.69169169, 43.74174174, 43.79179179, 43.84184184, 43.89189189, 43.94194194, 43.99199199, 44.04204204, 44.09209209, 44.14214214, 44.19219219, 44.24224224, 44.29229229, 44.34234234, 44.39239239, 44.44244244, 44.49249249, 44.54254254, 44.59259259, 44.64264264, 44.69269269, 44.74274274, 44.79279279, 44.84284284, 44.89289289, 44.94294294, 44.99299299, 45.04304304, 45.09309309, 45.14314314, 45.19319319, 45.24324324, 45.29329329, 45.34334334, 45.39339339, 45.44344344, 45.49349349, 45.54354354, 45.59359359, 45.64364364, 45.69369369, 45.74374374, 45.79379379, 45.84384384, 45.89389389, 45.94394394, 45.99399399, 46.04404404, 46.09409409, 46.14414414, 46.19419419, 46.24424424, 46.29429429, 46.34434434, 46.39439439, 46.44444444, 46.49449449, 46.54454454, 46.59459459, 46.64464464, 46.69469469, 46.74474474, 46.79479479, 46.84484484, 46.89489489, 46.94494494, 46.99499499, 47.04504505, 47.0950951 , 47.14514515, 47.1951952 , 47.24524525, 47.2952953 , 47.34534535, 47.3953954 , 47.44544545, 47.4954955 , 47.54554555, 47.5955956 , 47.64564565, 47.6956957 , 47.74574575, 47.7957958 , 47.84584585, 47.8958959 , 47.94594595, 47.995996 , 48.04604605, 48.0960961 , 48.14614615, 48.1961962 , 48.24624625, 48.2962963 , 48.34634635, 48.3963964 , 48.44644645, 48.4964965 , 48.54654655, 48.5965966 , 48.64664665, 48.6966967 , 48.74674675, 48.7967968 , 48.84684685, 48.8968969 , 48.94694695, 48.996997 , 49.04704705, 49.0970971 , 49.14714715, 49.1971972 , 49.24724725, 49.2972973 , 49.34734735, 49.3973974 , 49.44744745, 49.4974975 , 49.54754755, 49.5975976 , 49.64764765, 49.6976977 , 49.74774775, 49.7977978 , 49.84784785, 49.8978979 , 49.94794795, 49.997998 , 50.04804805, 50.0980981 , 50.14814815, 50.1981982 , 50.24824825, 50.2982983 , 50.34834835, 50.3983984 , 50.44844845, 50.4984985 , 50.54854855, 50.5985986 , 50.64864865, 50.6986987 , 50.74874875, 50.7987988 , 50.84884885, 50.8988989 , 50.94894895, 50.998999 , 51.04904905, 51.0990991 , 51.14914915, 51.1991992 , 51.24924925, 51.2992993 , 51.34934935, 51.3993994 , 51.44944945, 51.4994995 , 51.54954955, 51.5995996 , 51.64964965, 51.6996997 , 51.74974975, 51.7997998 , 51.84984985, 51.8998999 , 51.94994995, 52. ])
# Plot x versus y.
plt.plot(x, y, 'k.')
[<matplotlib.lines.Line2D at 0x1f868bc2310>]
# Do regression on the x and y arrays using numpy.
np.polyfit(x, y, 1)
array([5., 2.])
# Create a y with noise.
y = 3.0 * x - 1.0 + np.random.normal(0.0, 1.0, len(x))
# Look at y.
y
array([ 1.70899268e-01, -2.88868075e-01, 8.07175042e-01, -1.88970672e+00, -1.41383459e+00, 4.22800227e-01, -8.26629046e-01, -8.62045579e-01, -5.87970313e-01, -2.98702689e+00, 6.86742496e-01, -9.04646905e-01, -8.81728727e-01, 1.06025259e+00, -3.82122210e-01, 2.22657478e-01, 4.24511903e-01, -1.52662449e+00, -2.90721272e-02, -8.28545635e-02, -3.14778319e-01, -1.23413447e+00, -7.48496927e-01, -1.24442846e-01, -2.88453276e-01, -1.02455914e+00, -1.22466749e+00, -1.04112025e+00, -1.09702099e+00, 9.82529225e-01, -2.91735503e+00, 6.41177656e-01, 6.56887006e-01, -4.52312137e-01, 9.67684664e-01, 3.22360721e-01, 1.40766013e+00, 4.87036358e-01, -3.63794265e-02, 7.87225477e-01, -9.02170371e-02, 3.64389096e-01, 4.83783322e-01, 2.82561563e-01, -1.39259186e+00, -5.69579052e-01, 3.05637994e+00, 1.36674914e+00, 7.12383775e-01, 1.87453860e+00, 5.26120630e-01, -4.10874867e-01, 3.69304150e-01, -9.38094524e-01, 3.40316852e-01, -5.89005517e-01, 2.15101541e+00, 1.21432490e+00, -9.00954694e-02, 2.02689674e+00, -9.64393720e-01, -6.92789797e-01, 1.71117627e+00, 7.00622083e-01, 1.43504363e+00, 1.31668013e+00, 1.13256847e+00, 2.58132031e-01, 1.73943548e+00, 1.67817092e+00, 7.59491483e-01, 7.63583300e-02, 1.32592653e+00, 1.26453155e+00, 7.92354623e-01, 1.58257496e+00, 1.73207506e+00, 1.41634369e+00, 4.92529463e-01, 7.22109947e-01, 6.92276560e-01, 2.77993838e+00, 1.73606741e+00, 1.75882392e+00, 1.40051311e+00, 5.62770275e-01, 1.96561686e+00, 1.26839214e+00, 1.15793109e-01, 2.86850639e+00, 7.15301460e-01, 8.59527055e-01, 9.40370398e-01, 3.30854733e+00, 2.77302018e-01, 1.52816252e+00, 3.17681659e-01, 2.93927678e+00, 2.53826073e+00, 2.18544388e+00, 4.28276960e+00, 1.78925314e+00, 5.23329711e-01, 1.91901991e+00, 1.29265079e+00, 1.46790839e+00, 1.92736150e+00, 2.22751211e+00, 1.93832793e+00, 1.84820336e+00, 2.56445458e+00, 2.02594573e+00, 2.35623087e+00, 1.83042174e+00, 2.98449137e+00, 2.81281924e+00, 2.52717320e+00, 2.76194985e+00, 2.11128966e+00, 4.14441138e+00, 2.11113270e+00, 2.23433748e+00, 4.25306983e+00, 1.54062190e+00, 2.17500478e+00, 3.48755238e+00, 2.96320082e+00, 3.23521078e+00, 1.82570274e+00, 2.59821539e+00, 2.75026798e+00, 5.04146193e+00, 3.97066473e+00, 1.91858360e+00, 2.03160759e+00, 3.79849932e+00, 4.38210511e+00, 3.44975744e+00, 4.79697291e+00, 3.28666474e+00, 2.50329634e+00, 3.47689900e+00, 2.63820964e+00, 2.85431515e+00, 4.40069220e+00, 3.80136815e+00, 3.57969797e+00, 3.79379987e+00, 2.93932963e+00, 1.61967890e+00, 2.62755163e+00, 1.53251317e+00, 4.38694401e+00, 3.32985084e+00, 4.57282125e+00, 3.81959260e+00, 5.08713820e+00, 3.36740233e+00, 3.10838983e+00, 3.73461241e+00, 3.56250265e+00, 4.53290821e+00, 3.71691941e+00, 4.88895278e+00, 3.06514709e+00, 2.62264473e+00, 2.60677668e+00, 5.09391221e+00, 5.50366463e+00, 4.86978425e+00, 5.58809645e+00, 3.73699851e+00, 4.20259219e+00, 4.29169181e+00, 5.34289501e+00, 3.74718569e+00, 4.34348949e+00, 4.70126737e+00, 6.34727690e+00, 5.14055994e+00, 4.49654080e+00, 3.45227898e+00, 4.23904053e+00, 4.39191515e+00, 3.66539805e+00, 2.89503845e+00, 4.89722378e+00, 4.30102386e+00, 4.41322571e+00, 3.53413959e+00, 3.32646300e+00, 5.35581423e+00, 4.58296405e+00, 5.77889695e+00, 4.87348404e+00, 3.70784188e+00, 6.29856675e+00, 5.52579217e+00, 5.26098881e+00, 5.01102546e+00, 4.92716115e+00, 5.19735707e+00, 3.63956822e+00, 4.34712227e+00, 4.64576987e+00, 5.39554616e+00, 3.31245040e+00, 5.30675337e+00, 6.18797032e+00, 3.60525623e+00, 4.17814749e+00, 7.28721192e+00, 6.39702933e+00, 5.48877224e+00, 6.11148076e+00, 4.86925576e+00, 6.23914666e+00, 5.26520908e+00, 5.78814648e+00, 5.85713402e+00, 5.62515425e+00, 6.04459396e+00, 4.62874941e+00, 3.93510395e+00, 4.60047755e+00, 5.87529748e+00, 5.46385044e+00, 6.33031245e+00, 5.91446618e+00, 6.41982508e+00, 6.58859281e+00, 5.78869932e+00, 4.37355215e+00, 4.76537390e+00, 6.31237460e+00, 4.76623411e+00, 5.35740687e+00, 5.04275055e+00, 5.49310009e+00, 5.20536124e+00, 6.57579360e+00, 6.82304276e+00, 3.49513711e+00, 6.30185511e+00, 4.94470184e+00, 6.29307742e+00, 5.37497228e+00, 4.41284037e+00, 6.32895282e+00, 8.38681060e+00, 4.88010554e+00, 7.28817677e+00, 6.18407381e+00, 6.11304324e+00, 7.00585820e+00, 6.80088672e+00, 5.74751542e+00, 7.11296766e+00, 6.41715844e+00, 6.23054854e+00, 7.06585556e+00, 6.04126818e+00, 5.82299494e+00, 7.73949632e+00, 5.68629939e+00, 8.47277382e+00, 6.91287872e+00, 8.44267263e+00, 6.41623734e+00, 7.50544803e+00, 6.91820297e+00, 6.97508152e+00, 8.14181132e+00, 6.74363820e+00, 7.64795396e+00, 6.92493394e+00, 8.33132482e+00, 8.06933233e+00, 6.57047292e+00, 7.71366682e+00, 6.75830228e+00, 9.93864501e+00, 7.27765497e+00, 7.59745006e+00, 7.10411470e+00, 6.10542891e+00, 6.60528018e+00, 7.74994604e+00, 7.04440747e+00, 8.34677727e+00, 8.61302182e+00, 7.57472460e+00, 6.98174861e+00, 7.78522952e+00, 8.30509276e+00, 5.95418900e+00, 7.28451937e+00, 8.83319276e+00, 7.90985700e+00, 8.69646338e+00, 9.47779684e+00, 7.95643067e+00, 8.82116800e+00, 8.14350458e+00, 7.99809281e+00, 8.93088390e+00, 7.35800980e+00, 8.64173999e+00, 8.19615027e+00, 7.76873681e+00, 7.38092509e+00, 7.03759140e+00, 8.34240807e+00, 6.78703858e+00, 7.84899228e+00, 9.15621217e+00, 8.09287545e+00, 7.74146631e+00, 9.62948948e+00, 7.98560820e+00, 9.27533649e+00, 1.08647363e+01, 7.65708032e+00, 8.60119433e+00, 8.33995673e+00, 9.07955677e+00, 8.12980713e+00, 7.20226411e+00, 9.76357575e+00, 7.97330286e+00, 8.21871368e+00, 1.00503499e+01, 1.02853556e+01, 8.90127106e+00, 8.53583854e+00, 7.03081732e+00, 7.55089863e+00, 9.77404750e+00, 8.13408155e+00, 8.91003221e+00, 9.96927781e+00, 8.45359801e+00, 9.71070759e+00, 1.04904430e+01, 8.72650745e+00, 9.45608216e+00, 9.97486314e+00, 1.01253064e+01, 8.91245712e+00, 8.42709269e+00, 9.61063552e+00, 9.48554665e+00, 9.67399173e+00, 1.02102249e+01, 1.15286687e+01, 9.76249871e+00, 8.96975997e+00, 8.02303092e+00, 1.04645555e+01, 8.22275736e+00, 1.10914215e+01, 8.12511697e+00, 9.86812857e+00, 7.82160285e+00, 7.20315240e+00, 1.01699000e+01, 1.10215995e+01, 7.86177755e+00, 1.09719084e+01, 9.88062227e+00, 8.43569053e+00, 9.83730101e+00, 9.59528479e+00, 9.24640980e+00, 9.87006763e+00, 1.06273591e+01, 9.22635699e+00, 1.07437182e+01, 1.22246597e+01, 9.32395645e+00, 1.07075318e+01, 1.10696365e+01, 1.24865084e+01, 1.23500541e+01, 1.05751283e+01, 1.13038616e+01, 1.00406398e+01, 1.02411187e+01, 9.95356933e+00, 1.02720963e+01, 1.12154982e+01, 1.20422909e+01, 9.93943125e+00, 8.68239751e+00, 1.23919212e+01, 1.03644391e+01, 1.01629133e+01, 9.27991406e+00, 1.06341305e+01, 1.12126173e+01, 9.36523226e+00, 1.04926130e+01, 1.08666256e+01, 1.27834558e+01, 1.16368265e+01, 1.06966475e+01, 1.01011876e+01, 1.19528002e+01, 1.21772258e+01, 1.16825731e+01, 1.09274965e+01, 1.19793176e+01, 1.10532805e+01, 1.09425496e+01, 1.17697898e+01, 1.14947761e+01, 1.42740320e+01, 1.16632566e+01, 1.11799424e+01, 1.08706875e+01, 1.26918241e+01, 1.11962866e+01, 1.19119772e+01, 1.23324312e+01, 1.20139091e+01, 1.16254152e+01, 1.25101381e+01, 1.07013750e+01, 1.11653201e+01, 1.10884980e+01, 1.29899101e+01, 1.19247285e+01, 1.13132281e+01, 1.10277908e+01, 1.12613743e+01, 1.14767488e+01, 1.30672177e+01, 1.24386241e+01, 1.28423281e+01, 1.26354833e+01, 1.14394408e+01, 1.31844066e+01, 1.12538859e+01, 1.32690120e+01, 1.38918833e+01, 1.12241516e+01, 1.30896153e+01, 1.27427272e+01, 1.25201800e+01, 1.24778287e+01, 1.26183244e+01, 1.37878414e+01, 1.14359235e+01, 1.20208056e+01, 1.27647603e+01, 1.20018395e+01, 1.28531210e+01, 1.40217945e+01, 1.09637938e+01, 1.22836486e+01, 1.19785849e+01, 1.35716646e+01, 1.31133197e+01, 1.48279814e+01, 1.38088373e+01, 1.52733739e+01, 1.19727537e+01, 1.34718916e+01, 1.38858117e+01, 1.28522222e+01, 1.38916395e+01, 1.32065938e+01, 1.29066907e+01, 1.40151492e+01, 1.29318447e+01, 1.34279671e+01, 1.28663589e+01, 1.20648781e+01, 1.18471159e+01, 1.45826714e+01, 1.56962240e+01, 1.25840661e+01, 1.36711444e+01, 1.45154510e+01, 1.22683760e+01, 1.26044472e+01, 1.40222294e+01, 1.37970614e+01, 1.28109822e+01, 1.47615673e+01, 1.35749631e+01, 1.37420045e+01, 1.39301556e+01, 1.51873161e+01, 1.30865733e+01, 1.33463223e+01, 1.18944364e+01, 1.25530000e+01, 1.32966132e+01, 1.40932977e+01, 1.52382986e+01, 1.35627691e+01, 1.45176252e+01, 1.48579831e+01, 1.65892099e+01, 1.44830937e+01, 1.39571385e+01, 1.40892418e+01, 1.62624511e+01, 1.43453824e+01, 1.43916231e+01, 1.45948272e+01, 1.46831035e+01, 1.67398052e+01, 1.48393526e+01, 1.29772181e+01, 1.45288201e+01, 1.32553216e+01, 1.36029648e+01, 1.32093436e+01, 1.63003642e+01, 1.47509220e+01, 1.35458919e+01, 1.44446283e+01, 1.35826827e+01, 1.37016409e+01, 1.42399217e+01, 1.37761465e+01, 1.60794456e+01, 1.39221925e+01, 1.39850812e+01, 1.49904662e+01, 1.52393290e+01, 1.50831259e+01, 1.55105236e+01, 1.55128158e+01, 1.48025826e+01, 1.49326865e+01, 1.53516965e+01, 1.56355989e+01, 1.61816055e+01, 1.47352664e+01, 1.27397575e+01, 1.66769719e+01, 1.57850040e+01, 1.60113848e+01, 1.40526483e+01, 1.64853403e+01, 1.65139523e+01, 1.42865874e+01, 1.49494626e+01, 1.51097036e+01, 1.63399466e+01, 1.51106581e+01, 1.46913362e+01, 1.55332062e+01, 1.56264439e+01, 1.68572987e+01, 1.57477015e+01, 1.64297542e+01, 1.65029638e+01, 1.70448406e+01, 1.51658101e+01, 1.49486817e+01, 1.65990252e+01, 1.54402392e+01, 1.73976181e+01, 1.66233347e+01, 1.59520669e+01, 1.58927931e+01, 1.68592342e+01, 1.68130677e+01, 1.65943562e+01, 1.52691832e+01, 1.65937403e+01, 1.60053815e+01, 1.70508191e+01, 1.52084880e+01, 1.64950718e+01, 1.52783516e+01, 1.71568125e+01, 1.56028933e+01, 1.68854001e+01, 1.60035197e+01, 1.71237044e+01, 1.74182850e+01, 1.64198546e+01, 1.56881902e+01, 1.74216141e+01, 1.65598836e+01, 1.68562585e+01, 1.56117643e+01, 1.80931188e+01, 1.69970472e+01, 1.60042355e+01, 1.64441065e+01, 1.51122176e+01, 1.59193489e+01, 1.63051922e+01, 1.83032580e+01, 1.68259116e+01, 1.68116797e+01, 1.62312909e+01, 1.81653635e+01, 1.72605464e+01, 1.72876461e+01, 1.75145473e+01, 1.46539211e+01, 1.83831221e+01, 1.93137395e+01, 1.77651591e+01, 1.79197080e+01, 1.76213079e+01, 1.85356204e+01, 1.79358748e+01, 1.79039731e+01, 1.71158945e+01, 1.70256192e+01, 1.80170629e+01, 1.76993294e+01, 1.95658995e+01, 1.57664934e+01, 1.71472565e+01, 1.90394734e+01, 1.73778350e+01, 1.81918451e+01, 1.80299640e+01, 1.77422956e+01, 1.65037879e+01, 1.67311153e+01, 1.69505795e+01, 1.74390174e+01, 1.79819462e+01, 1.84556540e+01, 1.68369773e+01, 1.87274891e+01, 1.88286292e+01, 1.77853186e+01, 1.72258191e+01, 1.75855714e+01, 1.61459666e+01, 1.84176029e+01, 1.78307238e+01, 1.85672670e+01, 1.89011384e+01, 1.77332587e+01, 1.77943446e+01, 1.73249587e+01, 1.81241328e+01, 1.78842342e+01, 1.85492271e+01, 1.81036831e+01, 1.86320219e+01, 1.80849826e+01, 1.88156665e+01, 1.91012832e+01, 2.14708672e+01, 2.02482236e+01, 1.84023563e+01, 1.75435221e+01, 1.92438573e+01, 1.81244663e+01, 1.97537212e+01, 1.90061801e+01, 1.69867857e+01, 1.96082577e+01, 1.97080300e+01, 1.82116035e+01, 1.96735270e+01, 1.85080282e+01, 1.95380169e+01, 1.94522595e+01, 1.80939537e+01, 2.10872608e+01, 1.83991308e+01, 1.98047768e+01, 1.91433257e+01, 2.07258017e+01, 1.92982800e+01, 1.88209326e+01, 1.94638186e+01, 1.81262154e+01, 1.81152426e+01, 1.84695875e+01, 1.87150415e+01, 2.09134449e+01, 1.79450509e+01, 1.84170474e+01, 1.88488917e+01, 1.97647798e+01, 1.93214539e+01, 1.84084990e+01, 2.07860521e+01, 2.05310515e+01, 1.84152247e+01, 1.88807539e+01, 2.05983501e+01, 2.03425818e+01, 1.98387051e+01, 2.05569557e+01, 2.05949970e+01, 2.03004115e+01, 2.11944740e+01, 1.89989412e+01, 2.03175443e+01, 2.18339059e+01, 1.88548780e+01, 1.96367632e+01, 1.96882706e+01, 1.86481103e+01, 2.12017279e+01, 2.02053109e+01, 1.95443263e+01, 1.90301340e+01, 2.17561802e+01, 2.01272816e+01, 1.93315156e+01, 2.26112014e+01, 2.01154643e+01, 1.87779666e+01, 1.95011424e+01, 1.97030801e+01, 2.09603869e+01, 2.00345918e+01, 2.16231803e+01, 2.07061534e+01, 2.09725157e+01, 2.16226485e+01, 2.09473993e+01, 2.04449724e+01, 2.19243982e+01, 2.16212790e+01, 2.08903717e+01, 2.32545113e+01, 2.05603533e+01, 2.23609847e+01, 2.16496375e+01, 2.33637063e+01, 1.97927846e+01, 2.09229662e+01, 2.17848845e+01, 2.19759403e+01, 2.19789469e+01, 2.18759604e+01, 2.28746716e+01, 2.06222049e+01, 2.10929738e+01, 2.21701179e+01, 2.19419890e+01, 2.17892346e+01, 2.29800426e+01, 2.16078518e+01, 2.22742682e+01, 2.27349802e+01, 2.10777965e+01, 2.24276436e+01, 2.25838775e+01, 2.19627937e+01, 2.12336135e+01, 2.11946454e+01, 2.26935467e+01, 2.26644842e+01, 2.14845625e+01, 2.19526010e+01, 2.15583055e+01, 2.22132133e+01, 2.27925094e+01, 2.06140906e+01, 2.24055526e+01, 2.32378925e+01, 2.28288460e+01, 2.16086546e+01, 2.18559763e+01, 2.26001669e+01, 2.34625281e+01, 2.12593215e+01, 2.25702108e+01, 2.23734827e+01, 2.24730058e+01, 2.25243255e+01, 2.18792655e+01, 2.14545709e+01, 2.23466231e+01, 2.29256194e+01, 2.20788342e+01, 2.31180552e+01, 2.17313637e+01, 2.27145019e+01, 2.40936311e+01, 2.17629684e+01, 2.22751588e+01, 2.35072250e+01, 2.19294810e+01, 2.18300725e+01, 2.25620781e+01, 2.32418870e+01, 2.33807001e+01, 2.27743638e+01, 2.38122198e+01, 2.24375248e+01, 2.29644156e+01, 2.12903603e+01, 2.52673265e+01, 2.21906476e+01, 2.21123522e+01, 2.23166911e+01, 2.35691995e+01, 2.27931269e+01, 2.32092267e+01, 2.26283773e+01, 2.32265842e+01, 2.40786003e+01, 2.53704247e+01, 2.31338526e+01, 2.19057560e+01, 2.44038744e+01, 2.17624052e+01, 2.39269246e+01, 2.39883171e+01, 2.42728854e+01, 2.34144846e+01, 2.31429236e+01, 2.39414186e+01, 2.23963806e+01, 2.28148032e+01, 2.34669060e+01, 2.48115036e+01, 2.34173203e+01, 2.42641061e+01, 2.43591720e+01, 2.36929411e+01, 2.46280160e+01, 2.46903870e+01, 2.42976404e+01, 2.45177553e+01, 2.25884668e+01, 2.44022868e+01, 2.46445143e+01, 2.39462898e+01, 2.45659208e+01, 2.39161536e+01, 2.38922745e+01, 2.46538999e+01, 2.49751083e+01, 2.43525877e+01, 2.34915410e+01, 2.32342472e+01, 2.50317031e+01, 2.38485388e+01, 2.47718442e+01, 2.36627913e+01, 2.45126599e+01, 2.40122087e+01, 2.51282438e+01, 2.24315815e+01, 2.56208572e+01, 2.37784207e+01, 2.41268502e+01, 2.42494528e+01, 2.42436033e+01, 2.26420770e+01, 2.56863985e+01, 2.50839497e+01, 2.49663974e+01, 2.36068714e+01, 2.40258889e+01, 2.34264730e+01, 2.41559340e+01, 2.60270023e+01, 2.59592881e+01, 2.71433370e+01, 2.33609185e+01, 2.59867325e+01, 2.49607462e+01, 2.56743343e+01, 2.45345095e+01, 2.45999482e+01, 2.52409706e+01, 2.48582300e+01, 2.49403488e+01, 2.49393097e+01, 2.75307634e+01, 2.61586443e+01, 2.56414269e+01, 2.54057409e+01, 2.81999729e+01, 2.57713613e+01, 2.55349669e+01, 2.43767476e+01, 2.64227203e+01, 2.51004969e+01, 2.59569472e+01, 2.57955975e+01, 2.59380149e+01, 2.60591572e+01, 2.44930724e+01, 2.49440701e+01, 2.58558646e+01, 2.62819337e+01, 2.66791488e+01, 2.43942382e+01, 2.60042892e+01, 2.58224634e+01, 2.51417077e+01, 2.57081442e+01, 2.75567488e+01, 2.67994716e+01, 2.62386605e+01, 2.70298353e+01, 2.55227809e+01, 2.68301372e+01, 2.66228015e+01, 2.74225508e+01, 2.66481964e+01, 2.59015569e+01, 2.59972837e+01, 2.63027686e+01, 2.52345340e+01, 2.73038748e+01, 2.58525173e+01, 2.86564044e+01, 2.65556864e+01, 2.73050955e+01, 2.68762476e+01, 2.57194800e+01, 2.54158987e+01, 2.62295231e+01, 2.63326152e+01, 2.53896351e+01, 2.75669296e+01, 2.59505423e+01, 2.78116181e+01, 2.84485882e+01, 2.59660293e+01, 2.77173125e+01, 2.83302302e+01, 2.79474649e+01, 2.75089282e+01, 2.74512280e+01, 2.95505424e+01, 2.65223029e+01, 2.75652774e+01, 2.72313578e+01, 2.84152498e+01, 2.88307922e+01, 2.70415022e+01, 2.69154227e+01, 2.84971135e+01, 2.66811148e+01, 2.69151381e+01, 2.79876153e+01, 2.64252979e+01, 2.74775014e+01, 2.82633769e+01, 2.66403244e+01, 2.47053233e+01, 2.70954104e+01, 2.86284095e+01, 2.73372814e+01, 2.82268946e+01, 2.87514225e+01, 2.91657044e+01, 2.79329901e+01, 2.84437821e+01, 2.73113047e+01, 2.67576462e+01, 2.85346602e+01, 2.72198269e+01, 2.85760795e+01, 2.76391874e+01, 3.01481060e+01, 2.79636931e+01, 2.73119438e+01, 2.81914434e+01, 2.92192838e+01, 2.65624140e+01, 2.80688819e+01, 2.83034711e+01, 2.75242346e+01, 2.74431850e+01, 2.77080516e+01, 2.82280144e+01, 3.09864235e+01, 2.83993828e+01, 2.84068092e+01, 2.77154579e+01, 2.89739827e+01, 2.92829677e+01, 2.79889915e+01, 2.91662343e+01, 2.78858874e+01, 2.68098343e+01, 2.72628459e+01, 2.88550212e+01, 2.68112941e+01, 2.72218629e+01, 2.82664272e+01, 2.99839763e+01, 3.03652118e+01, 2.86002459e+01])
# Do regression on the x and y arrays using numpy.
np.polyfit(x, y, 1)
array([ 2.9990233 , -1.03591347])
# Create variables with those values.
m, c = np.polyfit(x, y, 1)
# Have a look at m and c.
m, c
(2.999023302695792, -1.0359134656300835)
# Plot x and y and the regression line in red.
plt.plot(x, y, 'k.')
plt.plot(x, m * x + c, 'r-')
[<matplotlib.lines.Line2D at 0x1f868c0c9a0>]
Note that we can easily calculate the best m and c ourselves.
# Calculate mean x and mean y.
x_avg = np.mean(x)
y_avg = np.mean(y)
# Subtract means from x and y.
x_zero = x - x_avg
y_zero = y - y_avg
# Dot product of mean-adjusted x and y divided by dot product of mean adjusted x with itself.
m = np.sum(x_zero * y_zero) / np.sum(x_zero * x_zero)
# Subtract m times average x from average y.
c = y_avg - m * x_avg
# Let's have a look - same values as above.
m, c
(2.999023302695789, -1.0359134656300757)
# Create y from a polynomial in x.
y = 2.0 * x * x + 5.0 * x + 1.0 + np.random.normal(0.0, 1.0, len(x))
# Look at y.
y
array([1.64593802e+00, 1.16505284e+00, 1.18978209e+00, 7.12664202e-01, 1.78363788e-01, 6.54203277e-01, 1.58964173e+00, 1.57847440e-01, 8.74635378e-01, 5.75742137e-02, 1.26695460e+00, 1.53578011e+00, 2.16780258e+00, 4.79228086e-01, 1.78360951e+00, 5.66081825e-01, 2.22581559e+00, 1.91084180e+00, 4.04399802e-01, 1.38568792e+00, 1.94773735e+00, 2.10991526e+00, 2.03644280e+00, 1.54758713e+00, 1.96540252e+00, 2.66951637e+00, 2.13405313e+00, 1.25225436e+00, 3.13276525e+00, 2.13550346e+00, 2.04246053e+00, 2.39314273e+00, 2.77240286e+00, 2.18306678e+00, 4.76218094e+00, 2.90428183e+00, 3.54787935e+00, 3.19706942e+00, 4.30767540e+00, 2.40639200e+00, 3.49749395e+00, 1.49410103e+00, 4.39918724e+00, 3.57999368e+00, 5.07189784e+00, 2.66565925e+00, 2.24131144e+00, 5.20744626e+00, 4.57792477e+00, 4.95516567e+00, 1.69227509e+00, 3.07791086e+00, 5.69168983e+00, 3.92154226e+00, 4.54638397e+00, 4.49833905e+00, 3.22553062e+00, 4.82818939e+00, 4.06634049e+00, 5.17242099e+00, 4.97395738e+00, 5.24110945e+00, 4.93572718e+00, 3.93934765e+00, 5.04256106e+00, 5.67122701e+00, 5.14204578e+00, 4.76866849e+00, 5.37137735e+00, 6.14476504e+00, 4.76710620e+00, 5.37596965e+00, 6.54447315e+00, 5.01499783e+00, 7.05098313e+00, 6.14112699e+00, 6.94737020e+00, 3.69700732e+00, 4.86834869e+00, 8.92445801e+00, 5.86304870e+00, 4.73925925e+00, 7.15091157e+00, 5.86245526e+00, 5.84651147e+00, 5.67047897e+00, 6.02639491e+00, 7.11651556e+00, 5.73321748e+00, 6.73476633e+00, 7.06835197e+00, 6.21070773e+00, 5.97585958e+00, 7.26723702e+00, 6.95647018e+00, 7.64053524e+00, 7.96500186e+00, 6.82364547e+00, 7.98317559e+00, 8.45015024e+00, 8.33038876e+00, 8.58292004e+00, 8.70972028e+00, 9.10778681e+00, 6.87658602e+00, 8.48514320e+00, 9.75355427e+00, 8.96160192e+00, 8.68075036e+00, 8.41621285e+00, 9.83935780e+00, 9.89688534e+00, 9.40662035e+00, 9.73780035e+00, 8.78102027e+00, 1.09668683e+01, 9.92161568e+00, 9.74970956e+00, 1.13998040e+01, 9.93140179e+00, 8.96257446e+00, 9.88794732e+00, 9.19103566e+00, 1.10814884e+01, 1.22562538e+01, 1.04331563e+01, 9.37437138e+00, 1.16129752e+01, 1.09838383e+01, 1.04442807e+01, 1.26090002e+01, 1.11436152e+01, 1.00906106e+01, 9.36225639e+00, 1.07228677e+01, 1.29667789e+01, 1.19807286e+01, 1.30283415e+01, 1.14685774e+01, 1.24298337e+01, 1.29604813e+01, 1.20757225e+01, 1.26008483e+01, 1.36528337e+01, 1.19831676e+01, 1.28371346e+01, 1.32311119e+01, 1.36132194e+01, 1.18108194e+01, 1.37907496e+01, 1.29519245e+01, 1.07098543e+01, 1.48727263e+01, 1.46219188e+01, 1.26114835e+01, 1.37122979e+01, 1.35429146e+01, 1.47092616e+01, 1.30508627e+01, 1.38694929e+01, 1.31526115e+01, 1.32655317e+01, 1.42982563e+01, 1.42632208e+01, 1.42327265e+01, 1.55997333e+01, 1.49497321e+01, 1.44873277e+01, 1.40086339e+01, 1.43375889e+01, 1.50873677e+01, 1.48444508e+01, 1.54318512e+01, 1.47118538e+01, 1.47695007e+01, 1.50177179e+01, 1.55434165e+01, 1.47303774e+01, 1.62290201e+01, 1.75608229e+01, 1.50867066e+01, 1.73217039e+01, 1.68643124e+01, 1.59517898e+01, 1.64680002e+01, 1.64574237e+01, 1.80142314e+01, 1.67986892e+01, 1.75984473e+01, 1.78427299e+01, 1.87997715e+01, 1.85064612e+01, 1.91560155e+01, 1.76731118e+01, 1.67878997e+01, 1.80052690e+01, 1.83012693e+01, 1.88192463e+01, 2.03867682e+01, 1.95839058e+01, 1.89210935e+01, 2.03339277e+01, 2.12303976e+01, 1.96398629e+01, 1.93657728e+01, 1.97996008e+01, 2.02409640e+01, 1.90801567e+01, 2.05297212e+01, 2.13489118e+01, 2.00690131e+01, 1.85343620e+01, 2.18621792e+01, 2.01732923e+01, 2.02041374e+01, 2.05910406e+01, 2.29578511e+01, 2.09812907e+01, 2.20021026e+01, 2.11414691e+01, 2.13550427e+01, 2.16585385e+01, 2.11694741e+01, 2.14508293e+01, 2.14645259e+01, 2.11488848e+01, 2.27089096e+01, 2.34621413e+01, 2.22942586e+01, 2.20541480e+01, 2.26213191e+01, 2.37839232e+01, 2.34823633e+01, 2.36596217e+01, 2.21419837e+01, 2.52707729e+01, 2.45763198e+01, 2.51982840e+01, 2.28033814e+01, 2.63318460e+01, 2.43662349e+01, 2.44751485e+01, 2.64640994e+01, 2.53692654e+01, 2.54642146e+01, 2.56479051e+01, 2.55349847e+01, 2.69431629e+01, 2.41850678e+01, 2.47437574e+01, 2.49488655e+01, 2.54166999e+01, 2.50660388e+01, 2.55707445e+01, 2.61150350e+01, 2.83557451e+01, 2.57655132e+01, 2.70582486e+01, 2.80514650e+01, 2.80615716e+01, 2.57910213e+01, 2.73014619e+01, 2.70264451e+01, 2.64738452e+01, 2.77836593e+01, 2.81838586e+01, 2.80869593e+01, 2.86061818e+01, 2.97010023e+01, 2.77162266e+01, 2.96283363e+01, 2.96550333e+01, 3.03534249e+01, 2.72216784e+01, 2.94814693e+01, 2.87539844e+01, 2.99934196e+01, 3.02754161e+01, 3.16152769e+01, 3.01945357e+01, 3.06075935e+01, 3.10767892e+01, 3.13019683e+01, 3.05161069e+01, 3.16856975e+01, 3.00700448e+01, 3.01779040e+01, 3.17757215e+01, 3.21803740e+01, 3.19992300e+01, 3.21278145e+01, 3.24110970e+01, 3.42720060e+01, 3.37160600e+01, 3.17647955e+01, 3.59477897e+01, 3.32017825e+01, 3.54896193e+01, 3.41781682e+01, 3.11018654e+01, 3.34424726e+01, 3.55030276e+01, 3.44748492e+01, 3.41363023e+01, 3.59638326e+01, 3.48367134e+01, 3.44159347e+01, 3.56621474e+01, 3.45090891e+01, 3.43776379e+01, 3.61854131e+01, 3.60064923e+01, 3.57630701e+01, 3.58543694e+01, 3.76705635e+01, 3.64598049e+01, 3.77182366e+01, 3.55316168e+01, 3.86051229e+01, 3.53530478e+01, 3.70455513e+01, 3.68850820e+01, 3.84835920e+01, 3.79299555e+01, 3.82088395e+01, 3.79823430e+01, 3.90243262e+01, 3.78423697e+01, 3.85951164e+01, 3.95578086e+01, 3.93182367e+01, 3.82302915e+01, 3.86569588e+01, 3.88739090e+01, 3.82562850e+01, 3.97120118e+01, 4.25842033e+01, 4.16678410e+01, 4.07429928e+01, 4.22401857e+01, 4.22869536e+01, 4.08096058e+01, 4.20401598e+01, 4.10692221e+01, 4.09503632e+01, 4.49662112e+01, 4.12951584e+01, 4.18025837e+01, 4.32227680e+01, 4.44846039e+01, 4.20186412e+01, 4.24694369e+01, 4.36809748e+01, 4.34128123e+01, 4.54057114e+01, 4.58221838e+01, 4.51561880e+01, 4.30270769e+01, 4.55158112e+01, 4.42597493e+01, 4.58919542e+01, 4.65689552e+01, 4.48298228e+01, 4.74079802e+01, 4.34535830e+01, 4.45986245e+01, 4.75509864e+01, 4.62165819e+01, 4.68814974e+01, 4.57273782e+01, 4.59500136e+01, 4.79414556e+01, 4.75458097e+01, 4.60767963e+01, 4.88533191e+01, 4.75387875e+01, 4.84894000e+01, 4.81215395e+01, 4.96482902e+01, 4.77780158e+01, 4.95862260e+01, 5.04132626e+01, 4.79127620e+01, 4.80196831e+01, 5.23074739e+01, 4.84017074e+01, 5.05144882e+01, 5.16215803e+01, 5.17188236e+01, 4.94503200e+01, 4.97133515e+01, 5.19536446e+01, 4.94679565e+01, 5.14917011e+01, 5.14796978e+01, 5.30979679e+01, 5.27033874e+01, 5.35529696e+01, 5.09406956e+01, 5.38351355e+01, 5.15094951e+01, 5.45324691e+01, 5.50028493e+01, 5.47894054e+01, 5.36427091e+01, 5.26830072e+01, 5.38222787e+01, 5.59090800e+01, 5.52115689e+01, 5.46820344e+01, 5.66487338e+01, 5.71745695e+01, 5.81693902e+01, 5.66189904e+01, 5.80835744e+01, 5.70282601e+01, 5.51042205e+01, 5.77603775e+01, 5.79158480e+01, 5.78369584e+01, 5.81325315e+01, 5.77924570e+01, 5.66527305e+01, 5.59034182e+01, 5.98850053e+01, 5.98181408e+01, 5.82537043e+01, 5.89564329e+01, 5.84440480e+01, 5.77239621e+01, 5.95929425e+01, 5.93950743e+01, 6.01563972e+01, 6.07325140e+01, 5.95500723e+01, 6.08392032e+01, 6.14760421e+01, 6.23372694e+01, 6.07737641e+01, 6.17967023e+01, 6.20898192e+01, 6.25811423e+01, 6.08117438e+01, 6.18138132e+01, 6.38127005e+01, 6.16515445e+01, 6.28886439e+01, 6.52579458e+01, 6.21954823e+01, 6.43507071e+01, 6.56590062e+01, 6.34256745e+01, 6.47985008e+01, 6.43843139e+01, 6.66125693e+01, 6.42913614e+01, 6.48951500e+01, 6.76709058e+01, 6.69764812e+01, 6.62184488e+01, 6.65618775e+01, 6.61541851e+01, 6.74921867e+01, 6.55802125e+01, 6.93919179e+01, 6.51929410e+01, 6.80690438e+01, 6.60942398e+01, 6.61151978e+01, 6.83503502e+01, 6.93237404e+01, 6.73511974e+01, 6.99641135e+01, 7.14608108e+01, 6.90631501e+01, 7.11726909e+01, 7.01570652e+01, 6.90654624e+01, 7.01127468e+01, 7.08454234e+01, 7.07570765e+01, 7.20770002e+01, 7.10342494e+01, 7.29212656e+01, 7.35658495e+01, 7.31041428e+01, 7.36302832e+01, 7.23524193e+01, 7.29589980e+01, 7.37958182e+01, 7.29695090e+01, 7.50332849e+01, 7.47240690e+01, 7.21935687e+01, 7.30587133e+01, 7.53445690e+01, 7.60237701e+01, 7.65731468e+01, 7.47054144e+01, 7.44992804e+01, 7.63186510e+01, 7.58385715e+01, 7.49749874e+01, 7.69636598e+01, 7.66564028e+01, 7.90959703e+01, 7.90867314e+01, 7.80508219e+01, 7.88037887e+01, 7.78306941e+01, 8.03715000e+01, 8.00069816e+01, 7.97480493e+01, 7.96797739e+01, 8.01128734e+01, 8.22090180e+01, 7.92765922e+01, 7.98768268e+01, 7.91514995e+01, 8.21035035e+01, 8.12348869e+01, 7.92268340e+01, 8.03574997e+01, 8.24527679e+01, 8.21805708e+01, 8.21087894e+01, 8.35152280e+01, 8.25198803e+01, 8.24886155e+01, 8.33638592e+01, 8.36938728e+01, 8.41151166e+01, 8.42764223e+01, 8.44531501e+01, 8.46108147e+01, 8.40978891e+01, 8.51580245e+01, 8.57452381e+01, 8.80714427e+01, 8.65725465e+01, 8.85201452e+01, 8.71741315e+01, 8.76464749e+01, 8.65212523e+01, 8.83425466e+01, 8.89856976e+01, 8.77307483e+01, 9.03734948e+01, 8.90593672e+01, 8.78746526e+01, 8.74584070e+01, 8.85639307e+01, 8.83242552e+01, 9.08165355e+01, 9.08945680e+01, 9.02684057e+01, 9.19642822e+01, 9.16245888e+01, 9.24872513e+01, 9.08359908e+01, 9.05954124e+01, 9.26489224e+01, 9.34592572e+01, 9.36124016e+01, 9.31495305e+01, 9.44006751e+01, 9.47354013e+01, 9.35964647e+01, 9.26787652e+01, 9.30214937e+01, 9.50433770e+01, 9.52571861e+01, 9.68709793e+01, 9.65776888e+01, 9.47685317e+01, 9.75495776e+01, 9.59893188e+01, 9.76099099e+01, 9.76093983e+01, 9.76540100e+01, 9.60051273e+01, 9.94404096e+01, 9.77678130e+01, 9.66799008e+01, 9.86134311e+01, 9.75430857e+01, 1.00377284e+02, 9.91467865e+01, 9.99209364e+01, 9.97464893e+01, 9.86555511e+01, 1.01510455e+02, 1.03086633e+02, 9.95156597e+01, 1.00465308e+02, 1.02155259e+02, 1.02250766e+02, 1.01882641e+02, 1.03241450e+02, 1.04073145e+02, 1.01244063e+02, 1.02734803e+02, 1.01317214e+02, 1.03754728e+02, 1.05277926e+02, 1.04578299e+02, 1.05696778e+02, 1.05179427e+02, 1.06700753e+02, 1.04877290e+02, 1.06870212e+02, 1.08298785e+02, 1.06235738e+02, 1.05778951e+02, 1.07265073e+02, 1.09222645e+02, 1.08027970e+02, 1.08167857e+02, 1.06975971e+02, 1.10998320e+02, 1.09522712e+02, 1.10266413e+02, 1.10959364e+02, 1.08559917e+02, 1.08499563e+02, 1.11639858e+02, 1.12712298e+02, 1.09559581e+02, 1.12370977e+02, 1.10392014e+02, 1.11368307e+02, 1.12228032e+02, 1.12856552e+02, 1.12742775e+02, 1.13443085e+02, 1.13300498e+02, 1.12860287e+02, 1.15000382e+02, 1.14594011e+02, 1.16272254e+02, 1.16194520e+02, 1.16051396e+02, 1.16314542e+02, 1.16841632e+02, 1.16018291e+02, 1.16981173e+02, 1.17114205e+02, 1.15544566e+02, 1.15583796e+02, 1.19196080e+02, 1.17702472e+02, 1.19715136e+02, 1.17319018e+02, 1.18954952e+02, 1.19046495e+02, 1.18727925e+02, 1.21281240e+02, 1.20794657e+02, 1.19524742e+02, 1.18974610e+02, 1.22012678e+02, 1.22960212e+02, 1.20714801e+02, 1.22732458e+02, 1.22862109e+02, 1.23118287e+02, 1.22153174e+02, 1.24022836e+02, 1.22812299e+02, 1.23788700e+02, 1.24196507e+02, 1.23278329e+02, 1.25717861e+02, 1.24116687e+02, 1.26955845e+02, 1.27169494e+02, 1.26547001e+02, 1.24694758e+02, 1.25919303e+02, 1.26187757e+02, 1.25752528e+02, 1.25990106e+02, 1.28670883e+02, 1.30006941e+02, 1.28976574e+02, 1.30262460e+02, 1.30319298e+02, 1.31337570e+02, 1.30517957e+02, 1.31339175e+02, 1.32028352e+02, 1.31268344e+02, 1.33968601e+02, 1.32675551e+02, 1.32086957e+02, 1.31293627e+02, 1.33140301e+02, 1.34028534e+02, 1.34292435e+02, 1.33238859e+02, 1.34434943e+02, 1.34869587e+02, 1.34444280e+02, 1.36335585e+02, 1.35762196e+02, 1.34896057e+02, 1.35355684e+02, 1.38016242e+02, 1.36898167e+02, 1.36200360e+02, 1.37636529e+02, 1.39516616e+02, 1.38277221e+02, 1.36789437e+02, 1.37590068e+02, 1.39797033e+02, 1.41733365e+02, 1.38722933e+02, 1.41538381e+02, 1.39901135e+02, 1.39350838e+02, 1.41239564e+02, 1.41325310e+02, 1.42161852e+02, 1.42274461e+02, 1.43173700e+02, 1.42049106e+02, 1.44198377e+02, 1.44026808e+02, 1.45334527e+02, 1.45491018e+02, 1.45110732e+02, 1.43744942e+02, 1.44628313e+02, 1.43925580e+02, 1.46826582e+02, 1.45771670e+02, 1.46011378e+02, 1.48743988e+02, 1.46780343e+02, 1.49429350e+02, 1.49124573e+02, 1.48927919e+02, 1.48816824e+02, 1.49507482e+02, 1.49962100e+02, 1.48783116e+02, 1.49791336e+02, 1.51570972e+02, 1.49545352e+02, 1.52271343e+02, 1.51694250e+02, 1.51142443e+02, 1.52688460e+02, 1.52795830e+02, 1.53904115e+02, 1.54062651e+02, 1.52040304e+02, 1.53401165e+02, 1.54611942e+02, 1.54866492e+02, 1.54560368e+02, 1.56086081e+02, 1.55618018e+02, 1.56451732e+02, 1.55563629e+02, 1.56772726e+02, 1.58149150e+02, 1.58460110e+02, 1.57583552e+02, 1.58940829e+02, 1.58665908e+02, 1.59153658e+02, 1.59549606e+02, 1.59950995e+02, 1.58628546e+02, 1.59061762e+02, 1.59357680e+02, 1.60883173e+02, 1.62906419e+02, 1.61684746e+02, 1.62307671e+02, 1.63400918e+02, 1.61870250e+02, 1.64350098e+02, 1.62292228e+02, 1.62421208e+02, 1.65349131e+02, 1.63334935e+02, 1.66199443e+02, 1.68292950e+02, 1.66489670e+02, 1.67020139e+02, 1.66696261e+02, 1.67198289e+02, 1.68025090e+02, 1.67511095e+02, 1.66871630e+02, 1.69895230e+02, 1.68924333e+02, 1.67687543e+02, 1.71780167e+02, 1.70813492e+02, 1.69310750e+02, 1.69943271e+02, 1.70015108e+02, 1.72482942e+02, 1.71415907e+02, 1.72819547e+02, 1.72950440e+02, 1.73322792e+02, 1.71751651e+02, 1.73117196e+02, 1.73644345e+02, 1.73716392e+02, 1.75110320e+02, 1.74614086e+02, 1.76202037e+02, 1.76697191e+02, 1.77414305e+02, 1.78383944e+02, 1.76275054e+02, 1.78071535e+02, 1.78398309e+02, 1.78123404e+02, 1.78490923e+02, 1.77995617e+02, 1.79068998e+02, 1.78893981e+02, 1.82024392e+02, 1.80563947e+02, 1.82787908e+02, 1.80849473e+02, 1.80988262e+02, 1.83370992e+02, 1.81435145e+02, 1.81172981e+02, 1.83997461e+02, 1.83133467e+02, 1.85118184e+02, 1.84245909e+02, 1.85951559e+02, 1.84289922e+02, 1.85672549e+02, 1.87153957e+02, 1.86473943e+02, 1.86364966e+02, 1.87727764e+02, 1.87938444e+02, 1.88550419e+02, 1.89989120e+02, 1.87670001e+02, 1.88829534e+02, 1.90140197e+02, 1.89972097e+02, 1.90419280e+02, 1.90744638e+02, 1.91091624e+02, 1.91311652e+02, 1.91413860e+02, 1.92333824e+02, 1.92307368e+02, 1.91374385e+02, 1.93288766e+02, 1.94327695e+02, 1.94786431e+02, 1.94715911e+02, 1.95106672e+02, 1.93837845e+02, 1.95440097e+02, 1.95108008e+02, 1.96753861e+02, 1.98272559e+02, 1.97459916e+02, 1.98103472e+02, 1.98755763e+02, 1.97663091e+02, 2.00956262e+02, 1.99109398e+02, 1.98874631e+02, 2.01553242e+02, 2.00438983e+02, 2.00999416e+02, 2.01060545e+02, 2.03034488e+02, 2.03789347e+02, 2.03856820e+02, 2.03808875e+02, 2.04178274e+02, 2.04904582e+02, 2.04090833e+02, 2.04401765e+02, 2.04564789e+02, 2.04966765e+02, 2.05453020e+02, 2.06753256e+02, 2.06068870e+02, 2.08286001e+02, 2.06365205e+02, 2.07606203e+02, 2.07383706e+02, 2.07495038e+02, 2.07839152e+02, 2.09050217e+02, 2.09414077e+02, 2.11340490e+02, 2.10531582e+02, 2.12395882e+02, 2.12429614e+02, 2.12868350e+02, 2.11361251e+02, 2.13770787e+02, 2.13593502e+02, 2.12624435e+02, 2.12796799e+02, 2.14251523e+02, 2.16070234e+02, 2.12990504e+02, 2.15302431e+02, 2.17666670e+02, 2.15292855e+02, 2.17009281e+02, 2.18653458e+02, 2.15809341e+02, 2.19168599e+02, 2.18115795e+02, 2.19862497e+02, 2.18787021e+02, 2.19474854e+02, 2.21322773e+02, 2.20351910e+02, 2.22188437e+02, 2.22029997e+02, 2.22932070e+02, 2.22706145e+02, 2.22860607e+02, 2.25236078e+02, 2.25946301e+02, 2.23550833e+02, 2.25057222e+02, 2.24053996e+02, 2.25702956e+02, 2.25835740e+02, 2.26127525e+02, 2.26840740e+02, 2.27656209e+02, 2.27432696e+02, 2.27960124e+02, 2.27506844e+02, 2.28263269e+02, 2.28905870e+02, 2.30235337e+02, 2.29979456e+02, 2.31787024e+02, 2.31947678e+02, 2.31233668e+02, 2.31662591e+02, 2.33792010e+02, 2.33743150e+02, 2.32047222e+02, 2.35442827e+02, 2.32566382e+02, 2.33752025e+02, 2.35984940e+02, 2.35862780e+02, 2.35951261e+02, 2.36120293e+02, 2.35371087e+02, 2.36140940e+02, 2.38712518e+02, 2.38747117e+02, 2.36450465e+02, 2.39683182e+02, 2.39458450e+02, 2.40368909e+02, 2.39814540e+02, 2.38820200e+02, 2.39231077e+02, 2.41237298e+02, 2.41230894e+02, 2.43129333e+02, 2.42762515e+02, 2.44162025e+02, 2.44505736e+02, 2.44589419e+02, 2.46558913e+02, 2.46503444e+02, 2.46424440e+02, 2.46615983e+02, 2.46360025e+02, 2.46860506e+02, 2.48225763e+02, 2.47647761e+02, 2.49762315e+02, 2.48666325e+02, 2.48032559e+02, 2.47331770e+02, 2.49591064e+02, 2.51800222e+02, 2.50921227e+02])
# Blindly try the regression - we get answers.
# Create variables with those values.
m, c = np.polyfit(x, y, 1)
# Have a look at m and c.
m, c
(25.008475244304485, -32.342910013748686)
# Plot the line and the points.
plt.plot(x, y, 'k.')
plt.plot(x, m * x + c, 'r-')
[<matplotlib.lines.Line2D at 0x1f868c3d3a0>]
# Create variables with those values.
a, b, c = np.polyfit(x, y, 2)
# Plot the line and the points.
plt.plot(x, y, 'k.')
plt.plot(x, a * x * x + b * x + c, 'r-')
[<matplotlib.lines.Line2D at 0x1f8690c1e80>]
Note how the points below the line are bunched in a specific $x$ range.
Let's try multiple linear regression using sklearn. https://scikit-learn.org/stable/
# Import linear_model from sklearn.
import sklearn.linear_model as lm
# Create a linear regression model instance.
m = lm.LinearRegression()
# Let's use pandas to read a csv file and organise our data.
import pandas as pd
# Read the iris csv from online.
df = pd.read_csv('https://datahub.io/machine-learning/iris/r/iris.csv')
df
sepallength | sepalwidth | petallength | petalwidth | class | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
... | ... | ... | ... | ... | ... |
145 | 6.7 | 3.0 | 5.2 | 2.3 | Iris-virginica |
146 | 6.3 | 2.5 | 5.0 | 1.9 | Iris-virginica |
147 | 6.5 | 3.0 | 5.2 | 2.0 | Iris-virginica |
148 | 6.2 | 3.4 | 5.4 | 2.3 | Iris-virginica |
149 | 5.9 | 3.0 | 5.1 | 1.8 | Iris-virginica |
150 rows × 5 columns
# Let's pretend we want to do linear regression on these variables to predict petal width.
x = df[['sepallength', 'sepalwidth', 'petallength']]
# Here's petal width.
y = df['petalwidth']
# Ask our model to fit the data.
m.fit(x, y)
LinearRegression()
# Here's our intercept.
m.intercept_
-0.248723586024453
# Here's our coefficients, in order.
m.coef_
array([-0.21027133, 0.22877721, 0.52608818])
# See how good our fit is.
m.score(x, y)
0.9380481344518986
# Calculating the score by hand.
t, u, v = m.coef_
c = m.intercept_
y_avg = y.mean()
u = ((y - (t * x['sepallength'] + u * x['sepalwidth'] + v * x['petallength'] + c))**2).sum()
v = ((y - y.mean())**2).sum()
1 - (u/v)
0.9380481344518986
# Using statsmodels.
import statsmodels.api as sm
# Tell statmodels to include an intercept.
xwithc = sm.add_constant(x)
# Create a model.
msm = sm.OLS(y, xwithc)
# Fit the data.
rsm = msm.fit()
# Print a summary.
print(rsm.summary())
OLS Regression Results ============================================================================== Dep. Variable: petalwidth R-squared: 0.938 Model: OLS Adj. R-squared: 0.937 Method: Least Squares F-statistic: 736.9 Date: Wed, 18 Nov 2020 Prob (F-statistic): 6.20e-88 Time: 11:25:32 Log-Likelihood: 36.809 No. Observations: 150 AIC: -65.62 Df Residuals: 146 BIC: -53.57 Df Model: 3 Covariance Type: nonrobust =============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------- const -0.2487 0.178 -1.396 0.165 -0.601 0.103 sepallength -0.2103 0.048 -4.426 0.000 -0.304 -0.116 sepalwidth 0.2288 0.049 4.669 0.000 0.132 0.326 petallength 0.5261 0.024 21.536 0.000 0.478 0.574 ============================================================================== Omnibus: 5.603 Durbin-Watson: 1.577 Prob(Omnibus): 0.061 Jarque-Bera (JB): 6.817 Skew: 0.222 Prob(JB): 0.0331 Kurtosis: 3.945 Cond. No. 90.0 ============================================================================== Notes: [1] Standard Errors assume that the covariance matrix of the errors is correctly specified.