# Import NumPy and matplotlib.pyplot
import numpy as np
import matplotlib.pyplot as plt
# Read in the data for age, bmi and insurance charges in separate arrays.
# Print out to check
#
filename = 'insurance.csv'
age = np.loadtxt('insurance.csv', usecols=0, skiprows=1, delimiter=',')
print("Age:")
print(f"{age}")
bmi = np.loadtxt('insurance.csv', usecols=2, skiprows=1, delimiter=',')
print("BMI:")
print(f"{bmi}")
charges = np.loadtxt('insurance.csv', usecols=6, skiprows=1, delimiter=',')
print("Insurance Charges:")
print(f"{charges}")
# print out the number of data instances
print(f"There are {len(age)} data entries")
# plot charges vs age and add labels to axis and title
plt.plot(age, charges, 'bo')
plt.ylabel('Insurance Charges')
plt.xlabel('Age')
plt.title("Age vs Insurance Charges")
plt.show
# plot charges vs BMI; add axis labels and plot title
plt.plot(bmi, charges, 'bo')
plt.xlabel("BMI")
plt.ylabel("Insurance Charges")
plt.title("BMI vs Insurance Charges")
plt.show
# Import NumPy and matplotlib.pyplot
import numpy as np
import matplotlib.pyplot as plt
# Read in the data for bmi and insurance charges in separate arrays.
# Print out to check
#
filename='insurance.csv'
bmi = np.loadtxt('insurance.csv', usecols=2, skiprows=1, delimiter=',')
print("BMI:")
print(f"{bmi}")
charges = np.loadtxt('insurance.csv', usecols=6, skiprows=1, delimiter=',')
print("Insurance Charges:")
print(f"{charges}")
# Fit a line using linear regression
line_coeff = np.polyfit(bmi, charges, 1)
print (f"equation of the line is {line_coeff[0]}x + {line_coeff[1]}")
f = np.poly1d(line_coeff)
plt.plot(bmi, charges, 'bo')
plt.xlabel("BMI")
plt.ylabel("Insurance Charges")
plt.title("BMI vs Insurance Charges")
bmi_min = min(bmi)
bmi_max = max(bmi)
x = np.linspace(bmi_min, bmi_max, 100)
plt.plot(x, f(x), 'r')
plt.text(15,55000,"line: y = 393.87x + 1192.94")
plt.show
# Plot data and line on same graph
line_coeff = np.polyfit(bmi, charges, 1)
print (f"equation of the line is {line_coeff[0]}x + {line_coeff[1]}")
f = np.poly1d(line_coeff)
plt.plot(bmi, charges, 'bo')
plt.xlabel("BMI")
plt.ylabel("Insurance Charges")
plt.title("BMI vs Insurance Charges")
bmi_min = min(bmi)
bmi_max = max(bmi)
x = np.linspace(bmi_min, bmi_max, 100)
plt.plot(x, f(x), 'r')
plt.text(15,55000,"line: y = 393.87x + 1192.94")
plt.show
# Fit a parabola to data
coeffs_quad = np.polyfit(bmi, charges, 2)
print (f"Quadratic polynomial is {coeffs_quad[2]}*x^2 +{ coeffs_quad[1]}*x +\
{ coeffs_quad[0]}")
g = np.poly1d( coeffs_quad)
x_eval = np.linspace(0.5,65); y_eval=g(x_eval)
plt.plot(bmi, charges, 'ro')
plt.plot(x_eval,y_eval)
plt.xlabel("BMI")
plt.ylabel("Insurance Charges")
plt.title("BMI vs Insurance Charges")
plt.text(0,55000,"parabola: y = -5177.03x^2 + 813.97x - 6.66")
# Plot data and parabola on same graph
coeffs_quad = np.polyfit(bmi, charges, 2)
print (f"Quadratic polynomial is {coeffs_quad[2]}*x^2 +{ coeffs_quad[1]}*x +\
{ coeffs_quad[0]}")
g = np.poly1d( coeffs_quad)
x_eval = np.linspace(0.5,65); y_eval=g(x_eval)
plt.plot(bmi, charges, 'ro')
plt.plot(x_eval,y_eval)
plt.xlabel("BMI")
plt.ylabel("Insurance Charges")
plt.title("BMI vs Insurance Charges")
plt.text(0,55000,"parabola: y = -5177.03x^2 + 813.97x - 6.66")