Я создаю приложение с API на основе Flask и базой данных PostgreSQL. Большая часть проекта — это рекомендательный алгоритм, который динамически извлекает данные из базы данных и обрабатывает их в DataFrames pandas. Когда я пытаюсь получить доступ к http://127.0.0.1:5000/recomender/1, чтобы получить рекомендации для пользователя с Student_id = 1, я получаю сообщение об ошибке:
TypeError: argument of type 'NoneType' is not iterable
Эта ошибка является непредвиденной, поскольку база данных содержит действительные данные для Student_id = 1. Вот распечатка полученных данных (с использованием psycopg2 и RealDictRow):
def calculate_matching(student_interest, student_grade, student_intended_major, opprtunity_tags):
score = 0
for tag in opprtunity_tags:
if tag in student_interest:
score += 2
if tag in student_grade:
score += 1
if tag in student_intended_major:
score += 3
return score
@app.route('/recomender/')
def createRecomendations(student_id):
# Dynamically fetch the latest student data from the database
students_df = get_students_df()
opportunities_df = get_opportunities_df()
# Ensure the student exists in the dataframe
if student_id not in students_df.index:
return {'error': 'Student not found'}, 404
# Get the student's information
recstudent = students_df.loc[students_df.index == student_id].iloc[0]
student_interest = recstudent['interest']
student_grade = recstudent['grade']
student_intended_major = recstudent['intended_major']
match_scores = []
for ind, row in opportunities_df.iterrows():
opportunity_tags = row['tags']
match_score = calculate_matching(student_interest, student_grade, student_intended_major, opportunity_tags)
# Update the DataFrame with the match score
opportunities_df.at[ind, 'match_score'] = match_score
match_scores.append({'opportunity': row['title'], 'match_score': match_score})
print(student_interest)
print(match_scores)
return {'recommendations': match_scores}
и я динамически получаю данные об учащихся и активности
Кстати, я помещаю информацию в фрейм данных pandas.
У меня была та же ошибка http://127.0.0.1:5000/ recomender/7 (получение рекомендаций для пользователя с идентификатором студента 7), и я исправил это, изменив процент, который сначала имел чтение данных
[/b] и я изменил интерес на «Наука и технология» в БД. Я сделал то же самое изменение с Student_id:1, и это все равно не сработало, и попробовал различные изменения в процентах, соответствующих интересам некоторых других данных, и все равно получил ошибку. Для контекста, другие объекты, которые работали, включают:
Я создаю приложение с API на основе Flask и базой данных PostgreSQL. Большая часть проекта — это рекомендательный алгоритм, который динамически извлекает данные из базы данных и обрабатывает их в DataFrames pandas. Когда я пытаюсь получить доступ к http://127.0.0.1:5000/recomender/1, чтобы получить рекомендации для пользователя с Student_id = 1, я получаю сообщение об ошибке:
[code]TypeError: argument of type 'NoneType' is not iterable[/code] Эта ошибка является непредвиденной, поскольку база данных содержит действительные данные для Student_id = 1. Вот распечатка полученных данных (с использованием psycopg2 и RealDictRow):[b][code]RealDictRow([('name', 'Jane Doe'), ('student_id', 1), ('email', '[email protected]'), ('phone', '123-456-7890'), ('grade', 'junior'), ('race', 'hispanic'), ('birthday', datetime.date(2006, 5, 15)), ('gender', 'female'), ('income', 'middle'), ('creeated_at', datetime.datetime(2024, 6, 27, 1, 25, 15, 235039)), ('intended_major', 'COMPUTER SCIENCE'), ('interest', ['Science', 'technology']), ('gpa', None), ('hashed_password', None), ('username', None)])[/code][/b] хотя некоторые поля не заполнены, они вообще не должны влиять на получение рекомендации, коду для получения рекомендаций они не нужны: [code]def calculate_matching(student_interest, student_grade, student_intended_major, opprtunity_tags): score = 0
for tag in opprtunity_tags: if tag in student_interest: score += 2 if tag in student_grade: score += 1 if tag in student_intended_major: score += 3
return score [/code] и [code]@app.route('/recomender/') def createRecomendations(student_id): # Dynamically fetch the latest student data from the database students_df = get_students_df() opportunities_df = get_opportunities_df()
# Ensure the student exists in the dataframe if student_id not in students_df.index: return {'error': 'Student not found'}, 404
# Get the student's information recstudent = students_df.loc[students_df.index == student_id].iloc[0]
print(student_interest) print(match_scores) return {'recommendations': match_scores} [/code] и я динамически получаю данные об учащихся и активности [code]def get_students_df(): conn = get_db_connection() cursor = conn.cursor() cursor.execute('SELECT * FROM students') students = cursor.fetchall() cursor.close() conn.close() print(students) return pd.DataFrame(students)
def get_opportunities_df(): conn = get_db_connection() cursor = conn.cursor() cursor.execute('SELECT * FROM oppertunities') opportunites = cursor.fetchall() cursor.close() conn.close() return pd.DataFrame(opportunites) [/code] Кстати, я помещаю информацию в фрейм данных pandas. У меня была та же ошибка http://127.0.0.1:5000/ recomender/7 (получение рекомендаций для пользователя с идентификатором студента 7), и я исправил это, изменив процент, который сначала имел чтение данных [b][code]RealDictRow([('name', 'algo rithim'), ('student_id', 7), ('email', '[email protected]'), ('phone', '123-456-9901'), ('grade', 'junior'), ('race', 'black'), ('birthday', datetime.date(2005, 6, 15)), ('gender', 'male'), ('income', 'middle'), ('creeated_at', datetime.datetime(2024, 6, 27, 11, 41, 1, 27045)), ('intended_major', 'BIOLOGY'), ('interest', ['science', 'research']), ('gpa', 3), ('hashed_password', None), ('username', None)])[/code][/b] и я изменил интерес на «Наука и технология» в БД. Я сделал то же самое изменение с Student_id:1, и это все равно не сработало, и попробовал различные изменения в процентах, соответствующих интересам некоторых других данных, и все равно получил ошибку. Для контекста, другие объекты, которые работали, включают: [b][code][RealDictRow([('name', 'Johnny Doe'), ('student_id', 5), ('email', '[email protected]'), ('phone', '123-456-7840'), ('grade', 'junior'), ('race', 'white'), ('birthday', datetime.date(2005, 6, 15)), ('gender', 'male'), ('income', 'middle'), ('creeated_at', datetime.datetime(2024, 6, 27, 4, 59, 29, 242410)), ('intended_major', 'MASS MEDIA'), ('interest', None), ('gpa', None), ('hashed_password', None), ('username', None)])[/code][/b] и [b][code]RealDictRow([('name', 'Testuser'), ('student_id', 21), ('email', '[email protected]'), ('phone', '(912) 134-3553'), ('grade', 'junior'), ('race', 'black'), ('birthday', datetime.date(2006, 1, 14)), ('gender', 'male'), ('income', None), ('creeated_at', datetime.datetime(2024, 12, 4, 13, 46, 23, 364021)), ('intended_major', 'VISUAL AND PERFORMING ARTS'), ('interest', ['Science', 'Computers', 'Technology', 'Male Identifying', 'College Prep', 'Business', 'Chemistry', 'Space Exploration', 'Social Justice', 'Psychology', 'U.S. History', 'World History']), ('gpa', None), ('hashed_password', '$2b$12$cz5M9yuK.9ILN431TPQ51ul46a3sCDCOCLxZXX6TF8P4yV5S.7dZy'), ('username', None)]),[/code][/b]
Я нуб, и это мой первый пост здесь.
Я пишу программу, которая должна распознавать речь из аудиофайла (и сначала преобразовывать файл из .ogg в .wav).
Вот мой код:
import speech_recognition
import pydub
Я столкнулся с ошибкой «TypeError: объект «NoneType» не повторяется» в моем скрипте Python. Вот упрощенная версия кода:
def get_items():
items = None
# Some logic here that might fail to populate `items`
return items
Я создаю автокодировщик и хочу закодировать свои значения в логическую матрицу. Я использую свою собственную функцию активации шага на последнем уровне, как показано ниже:
@tf.custom_gradient
def binary_activation(x):