but due to this , it forces me to look for solutions which i didn’t want to.
Is this function related for get_() in def calculate_error(m, b, point): ?
Can you provide a link to the full project please? Your screenshot only presents a small snapshot of the project’s tasks.
I would assume that at some point before then, you’ve either been asked to create a function called get_y() which computes the line equation or it has been done for you and it’s function explained.
The instruction
Use get_y() to get the y-value that x_point would be on the line
is just asking you to use that function, get_y(), with the appropriate parameters for m, x and b to compute the expected value for y.
For example:
x_point = 3 # you are getting this value from the "point" variable, but i'm setting it to 3 for the purposes of this example
gradient = 2 # the "m" term in the equation of a line is its gradient
intercept = 4 # the "b" term in the equation of a line is its intercept, or the point at which it crosses the y-axis
# so, if we know these parameters, instruction #3 would be to call "get_y()" with these parameters:
calc_y_point = get_y(gradient, intercept, x_point)
# subsequently:
print(calc_y_point) # output: 10 (y = mx + b -> (2 * 3) + 4 -> 6 + 4 -> 10)
One of the tasks you’re asked to do in that project is to complete the function definition for the function get_y(). I presume that you’ve done this step, so you ought to know what the parameters are for that function and what it returns.
It would seem that I guessed correctly in my previous post as to what the task is expecting of you:
If you’re attempting this project, one presumes that you’re comfortable with how functions work in Python. If you’re not comfortable with defining and calling functions, I would suggest that you re-visit the material which covers this before re-attempting Reggie’s Linear Regression.
Your function, in In [3], is calculating a value for y - but you’re doing it by manually providing an expression (m*x_point + b) where you have previously implemented a function (get_y()) to do that for you…
Hi there. Thanks for starting the thread @thiyamsureshsingh and thanks for the explanation @thepitycoder.
I’ve got another question regarding this project… apologies in advance if this question was better put in a different thread.
On this same project I’ve noticed that the solution presents the following code:
def calculate_all_error(m, b, points):
total_error = 0
for point in datapoints:
point_error = calculate_error(m, b, point)
total_error += point_error
return total_error
Shouldn’t the third line be for point in points: ?
This actually makes no difference in the final answer as the data points are actually stored on a global variable ‘datapoints’.
Shouldn’t make too much difference in the code here due to datapoints being passed to the function but if datapoints was changed to another list of a different size, there may be problems. I’ve done it slightly differently and might make a bit more sense:
def calculate_all_error(m, b, points):
error_total = 0
for i in range(0, len(points)):
error_total += calculate_error(m, b, points[i])
return error_total
I’d agree that it probably should be for point in points:. Relying on globals is often bad practice and in this case you have a function argument that does nothing. Unless you have a good reason for using indexes in Python it’s generally better to iterate through the sequence itself rather than indexing it. for point in points: is the more “pythonic” way to do this.