Using Python 3 Here is the starter code: # -------------------------------------
ID: 3740769 • Letter: U
Question
Using Python 3
Here is the starter code:
# ----------------------------------------------------------
#
# THIS CODE IS INCOMPLETE!
#
# ----------------------------------------------------------
import numpy as np
import numpy.linalg as la
import pandas as pd
import matplotlib.pyplot as plt
# Read in the data files
# Produce a Pandas histogram and plot (fill in appropriately)
plt.figure(0)
plt.title("a pretty histogram...")
plt.figure(1)
plt.title("a pretty plot...")
plt.xlabel("an axis")
plt.ylabel("an axis")
# Construct your A matrices
A_linear = np.zeros(some_shape)
A_quad = np.zeros(some_shape)
# Construct your b's
b = np.zeros(some_shape)
# Solve the least squares problem
# See how well your model (i.e. weights) does on the validate data set
# Plot a bar graph of the false-positives and false-negatives
bar_graph(fp_linear, fn_linear, fp_quad, fn_quad)
Explanation / Answer
import numpy as np
import numpy.linalg as la
import pandas as pd
import matplotlib.pyplot as plt
# Read in the data files
data_train = pd.io.parsers.read_csv("breast-cancer-train.dat", header=None, names=labels)
data_val = pd.io.parsers.read_csv("breast-cancer-validate.dat", header=None, names=labels)
plt.figure(0)
plt.title("Radius Mean Histogram")
data_train["radius (mean)"].hist()
plt.xlabel("Radius")
plt.ylabel("Patient Count")
plt.figure(1)
plt.title("Symmetry Mean Plot")
plt.scatter(np.linspace(0,300,num=300),data_train["symmetry (mean)"])
plt.xlabel("Patient Number")
plt.ylabel("Symmetry")
# Construct your A matrices
A_linear = np.zeros((300, 30))
for i in range(2,len(labels)):
A_linear[:,i-2] = data_train[labels[i]]
A_quad = np.zeros((300, 14))
for i in range(len(subset_labels)):
A_quad[:,i] = data_train[subset_labels[i]]
A_quad[:,i+len(subset_labels)] = (data_train[subset_labels[i]])**2
A_quad[:,8] = data_train[subset_labels[0]]*data_train[subset_labels[1]]
A_quad[:,9] = data_train[subset_labels[0]]*data_train[subset_labels[2]]
A_quad[:,10] = data_train[subset_labels[0]]*data_train[subset_labels[3]]
A_quad[:,11] = data_train[subset_labels[1]]*data_train[subset_labels[2]]
A_quad[:,12] = data_train[subset_labels[1]]*data_train[subset_labels[3]]
A_quad[:,13] = data_train[subset_labels[2]]*data_train[subset_labels[3]]
# Construct your b's
m_b = data_train[labels[1]]
b = np.zeros(300)
for i in range(300):
if m_b[i]=="M":
b[i] = 1
elif m_b[i]=="B":
b[i] = -1
# Solve the least squares problem
U, sigma, VT = la.svd(A_linear)
Sigma = np.zeros(A_linear.shape)
Sigma[:30,:30] = np.diag(sigma)
Sigma_pinv = np.zeros(A_linear.shape).T
Sigma_pinv[:30,:30] = np.diag(1/sigma[:30])
Sigma_pinv.round(3)
weights_linear = VT.T.dot(Sigma_pinv).dot(U.T).dot(b)
U, sigma, VT = la.svd(A_quad)
Sigma = np.zeros(A_quad.shape)
Sigma[:14,:14] = np.diag(sigma)
Sigma_pinv = np.zeros(A_quad.shape).T
Sigma_pinv[:14,:14] = np.diag(1/sigma[:14])
Sigma_pinv.round(3)
weights_quad = VT.T.dot(Sigma_pinv).dot(U.T).dot(b)
# See how well your model (i.e. weights) does on the validate data set
A_linear2 = np.zeros((260, 30))
for i in range(2,len(labels)):
A_linear2[:,i-2] = data_val[labels[i]]
A_quad2 = np.zeros((260, 14))
for i in range(len(subset_labels)):
A_quad2[:,i] = data_val[subset_labels[i]]
A_quad2[:,i+len(subset_labels)] = (data_val[subset_labels[i]])**2
A_quad2[:,8] = data_val[subset_labels[0]]*data_val[subset_labels[1]]
A_quad2[:,9] = data_val[subset_labels[0]]*data_val[subset_labels[2]]
A_quad2[:,10] = data_val[subset_labels[0]]*data_val[subset_labels[3]]
A_quad2[:,11] = data_val[subset_labels[1]]*data_val[subset_labels[2]]
A_quad2[:,12] = data_val[subset_labels[1]]*data_val[subset_labels[3]]
A_quad2[:,13] = data_val[subset_labels[2]]*data_val[subset_labels[3]]
pl = A_linear2 @ weights_linear
pq = A_quad2 @ weights_quad
m_b = data_val[labels[1]]
fp_linear = 0
fn_linear = 0
fp_quad = 0
fn_quad = 0
for i in range(len(pl)):
if pl[i]>0 and m_b[i]=="B":
fp_linear += 1
elif pl[i]<0 and m_b[i]=="M":
fn_linear += 1
if pq[i]>0 and m_b[i]=="B":
fp_quad += 1
elif pq[i]<0 and m_b[i]=="M":
fn_quad += 1
# Plot a bar graph of the false-positives and false-negatives
bar_graph(fp_linear, fn_linear, fp_quad, fn_quad)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.