Look at your code, look at the error message.
print("The R2 value of the training set is : {}".format(R2.train))
NameError: name 'R2' is not defined
So
R2.train
is what causes the error.
From the first line of code you show us:
R2_train=round(reg_all.score(xtrain,ytrain),3)
You have a variable called
R2_train
, and the error line is referencing
R2.train
So at a guess, you meant to type this:
print("The R2 value of the training set is : {}".format(R2_train))
You should expect to get syntax errors every day, probably many times a day while you are coding - we all do regardless of how much experience we have! Sometimes, we misspell a variable, or a keyword; sometimes we forget to close a string or a code block. Sometimes the cat walks over your keyboard and types something really weird. Sometimes we just forget how many parameters a method call needs.
We all make mistakes.
And because we all do it, we all have to fix syntax errors - and it's a lot quicker to learn how and fix them yourself than to wait for someone else to fix them for you! So invest a little time in learning how to read error messages, and how to interpret your code as written in the light of what the compiler is telling you is wrong - it really is trying to be helpful!
So read this:
How to Write Code to Solve a Problem, A Beginner's Guide Part 2: Syntax Errors[
^] - it should help you next time you get a compilation error!